Application_Start() の global.asax で、データベースに送信され、名前/値テーブルからすべてのアプリ設定を取得し、それらを経由でお申し込みApplication.Add(name,value)
ください。
別のプロジェクトに「アプリケーション ファサード」があり、サービス レイヤー、データ レイヤーなどで使用され、さまざまなビットとピースを実行する必要がある設定を取得します。
私のデータベースには、いくつかのエントリがあります。
ConfigName | ConfigValue
WebServiceUsername | myUsername
WebServicePassword | myPassword
したがって、私の方法では、データベースからこれらの値を取得して、アプリケーションに入れます。
protected void GetApplicationSettings()
{
//Get all the config values out of the database, and then put them into the application keys...
var appConfigAttributes = ApplicationConfigurationService.GetAppConfigNames();
foreach (var appConfig in appConfigAttributes)
{
Application.Add(appConfig.ConfigName,appConfig.ConfigValue);
}
}
これは、後でアプリケーションから値を呼び出す方法です。
public static string WebServiceUsername
{
get { return WebConfigurationManager.AppSettings["WebServiceUsername"]; }
}
これは物事が奇妙になるところです。
これを使用して Web レイヤーからアプリケーション ファサードを呼び出すと、次のようになります。
<%= ApplicationFacade.WebServiceUsername %>
何も返されません (はい、get メソッドで ConfigurationManager だけを試しました!)。
しかし、これは奇妙なことです...
アプリケーション キーを web.config ファイルに手動で入力すると...
<appSettings>
<add key="putz" value="mash"/>
</appSettings>
次に、Putz と同様のプロパティを ApplicationFacade クラスに組み込みます。ビュー ( <%= ApplicationFacade.Putz %>
) で呼び出しを行うと、' mash
' が返されます。
したがって、ApplicationFacade が正しく機能していることはわかっています。おそらくそれはapplication_start()の私のコードですか?
さて、これを私の見解に入れると<%=Application["WebServiceUsername"]%>
、myUsername
が返されます。
何が得られる?!
答え
ConfigurationManager.AppSettings.Set(appConfig.ConfigName,appConfig.ConfigValue);