ファイルに実際に<appSettings>
を指定することはできません。これは、applicationHost.config
がIIS固有の設定しか定義していないためです。あなたがapplicationHost.config
を編集し、サイトまたは<location path="...">
セクションの下<appSetting>
セクションを追加しようとするとエラー(IIS月を取得します
%systemroot%\System32\inetsrv\config\schema\IIS_schema.xml
:あなたはこれを確認するapplicationHost.config
スキーマを確認することができます開始せず、IIS MMCコンソールに構成エラーが表示されます)。
IISマネージャーでグローバルアプリケーション設定を構成した場合、これはIISのデフォルト.NET Frameworkバージョン設定と一致するマスターweb.config
ファイルで実際に構成されます。
<appSettings/>
は、.NET Frameworkに固有のものであり、のみで構成することができます。
%SYSTEMROOT%\Microsoft.NET\Framework\[framework version]\CONFIG\machine.config
%SYSTEMROOT%\Microsoft.NET\Framework\[framework version]\CONFIG\web.config
%SYSTEMROOT%\Microsoft.NET\Framework64\[framework version]\CONFIG\machine.config
%SYSTEMROOT%\Microsoft.NET\Framework64\[framework version]\CONFIG\web.config
そしてもちろん、アプリケーションのapp.config
やweb.config
ファイル。
私のアドバイスは、まれに世界的に利用可能な値が必要な場合を除いて、これらの設定をアプリケーションのローカルに保つことです。
更新:今、私はあなたの問題を理解することを
- これにアプローチする方法があります - あなたは同じ物理フォルダへのすべてのポイントは、複数のIISサイトを持っています。
HTTP_HOST
値のプライマリキーを持つ構成テーブルをデータベースに持つことができます。あなたのweb.config
で
Host SitePrefix
==== ======
domain1.com D001
domain2.com D002
:これは、例えば、接頭辞にマップGlobal.asax.cs
でアプリケーションのApplication_Start
イベントで
は、アプリケーション全体の値を初期化:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
string httpHost = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
Application["SitePrefix"] = GetSiteKeyFromDb(httpHost);
}
この値はアプリケーション全体で利用できますが、サイト固有の値です。
あなたはサイトに固有の設定を読み込む必要があります。
string siteSetting = ConfigurationManager.AppSettings[
HttpContext.Current.Application["SitePrefix"] + "_Setting1"
];
をしかし、あなたはApplication_Start
にデータベースをヒットしている場合、実際にこれらのすべてのサイト固有の設定を保存するために好都合することができますデータベースを読み取り、の代わりにApplication
にキャッシュしてください。
おそらく正しいでしょう...をその場所に置いても何のエラーもありませんでした。具体的には、単一の物理パスを使用して複数の仮想ホストをホストすることと関連があります。短くて不幸な答えは、あなたのコードを再利用できるかもしれないが、あなたはまだ1つの設定を残していて、あなたはHTTP_HOSTから答えを出さなければならないということです。私はホスト固有の設定を処理するためのコードを書くのを避けようとしていました。ああ、生きて学ぶ。 –
Ajaxx
@ajaxx - 複数の仮想ホストがあるとすると、複数のホストヘッダーを持つ単一のサイトまたは同じ物理フォルダを指す複数のサイトを意味しますか? – Kev
同じ物理ホスト上の複数のサイトが、すべて同じ物理フォルダーを指しています。これはasp.netサイトであり、ほとんどすべてがデータ駆動型です。配備されたリソースを複製する理由はありません。唯一の注意点は、サイトベースの設定が可能になることを期待していたことです。代わりに物理パス(web.config)に基づいています。サーバー変数に依存していくつかの重要な決定を行うことで、その問題を回避するだけです。 – Ajaxx