web-dev-qa-db-ja.com

ConfigurationManager.AppSettingsがnullになっていますか?

「別のクラスライブラリにweb.configがあり、別のWebアプリケーションからweb.configアプリの設定を読み取っていた」ということに気づきませんでした。

VS2010ターゲットフレームワーク3.5を使用しています

ここで何が間違っているのかわかりませんが、ConfigurationManager.AppSettings["StoreId"];を取得しようとするとnullを取得しています

private string _storeid = GetStoreId;

public static string GetStoreId
{
    get
    {
        return ConfigurationManager.AppSettings["StoreId"];
    }
}

web.config:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>
31
Nick Kahn

上記のコードは、メインのasp.netライブラリとは別のクラスライブラリを使用していますか?

上記の設定でapp.configをこのライブラリに追加した場合、ConfigurationManagerは適切なファイルを読み取っていません。これは、asp.netライブラリのweb.configファイルを参照するためです。

30
MrEyes

ユニットテストが必要な場合A COPY of APP.CONFIG inside the NIT TEST PROJECT

36
Ben

私はこれが古いことを知っていますが、私はここに戻ってきます:(

これの通常の原因は、コンテキストによるものです。

VSTOアドインプロジェクトとクラスライブラリプロジェクトを使用したソリューションがあるとします。App.Configがクラスライブラリにある場合、実行中のアプリケーションのコンテキストはVSTOアドインプロジェクトであるため、動作しません。構成から値を読み取るには、コンテキストを使用して構成ファイルをプロジェクトに移動する必要があります。

VSTOに慣れていない場合は、代わりにASP.Netプロジェクトとapp.configをweb.configに書きました

解決

気の利いた解決策は、他のプロジェクトに設定ファイルのショートカットを追加して、1つのファイルのみを更新することです:enter image description here

回答#2によるアセンブリファイルの共有に似ています: https://stackoverflow.com/a/15319582/495455

14
Jeremy Thompson

そして:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>

aSP.NETアプリケーションのweb.configファイルにあり、Visual Studioのクラスライブラリプロジェクトに追加したapp.configファイルにはありませんか?この場合、nullを取得することはできません。これをVisual Studioのapp.configクラスライブラリプロジェクトに追加した場合、nullを取得するのはまったく正常な動作です。

6
Darin Dimitrov

免責事項;)この投稿は遅すぎるのでOPには答えませんが、間違いなく最終的には読者を助けるでしょうこのページへ。

私が直面した問題ConfigurationManager.AppSettings["uName"]はC#Web APIプロジェクトでnullを返します。

チェックした基本的なもの

1)コードConfigurationManager.AppSettings["uName"]で、web.configファイルと同じように正確なキー 'uName'を使用していました、

すなわち

<appSettings>
      <add key="uName" value="myValue" />
</appSettings>

チェックしていないしていないことタイプミスとしてuserNameuNameなどの代わりに.

2)Web APIプロジェクトであるため、ファイルはweb.configではなくapp.configとして、またプロジェクトのルートフォルダ。 [画像を参照]。

enter image description here

ソリューション

私のために働いた解決策、

変更ConfigurationManager.AppSettings["uName"]からWebConfigurationManager.AppSettings["uName"]

and

私が持っていることを確認した

<appSettings>
          <add key="uName" value="myValue" />
</appSettings>

rightファイルで.

正しいファイルは、Viewフォルダーのweb.confignotです

notherデバッグまたはリリースweb.config

enter image description here

5
eRaisedToX

私は答えを得ましたDLLは、App.configにcreate.soエントリが存在するプロジェクトにない別のプロジェクトから呼び出されます。プロジェクト設定ファイルの呼び出しに移動する必要があります。

たとえば、ソリューションに2つのプロジェクトがあり、1つのクラスライブラリと他のコンソールアプリケーションがあります。コンソールアプリケーションにクラスライブラリ参照を追加しているので、クラスライブラリプロジェクトにapp.configファイルを追加すると、null exception。コンソールアプリケーションの.config

2
zaheer ahmad

アプリの設定はConfigurationManager.AppSettingsに読み込まれますが、ユーザー設定(プロジェクトプロパティのプロパティ設定)は読み込まれません。

1
Markus

上記の回答に同意し、さらにポイントを追加したいと思います

  1. 以下のコードの前後にスペースを入れないでください。

    private static string Client_ID = ConfigurationManager.AppSettings["ida:ClientId"];
    

    ida:ClientIdの間にスペースを入れると機能せず、nullを返します

  2. キー値の名前が正しいことを確認してください

  3. webConfigurationManagerを試すことができます

0
Mehdi Jalal

これは、クラスライブラリ(.dll)をテストしているときに起こりました。どちらも同じプロジェクトにありましたが、ライブラリのApp.configには必要な設定がありました。 itがライブラリを実行していたため、テスト用に作成したアプリには設定が必要でした。

0
bobbins

ファイルエクスプローラーからプロジェクトをコピーし、プロジェクトの名前を変更すると、この問題が発生しました。これによりDebugフォルダーがコピーされ、「新しい場合にコピー」に設定していなかったため、古いApp.configファイルは上書きされませんでした。

デバッグフォルダーを削除して再構築するだけです。それが誰かを助けることを願っています。

0
thatOneGuy