現在、アプリケーションを調整してIIS 7.5を新しいAPIで構成するために、Microsoft.Web.Administration(MWA)名前空間をいじっています。 IISレベルの変更はすべて次のファイルで表現する必要があることを理解しました(Win2K8-R2を使用しています)。
%WINDIR%\ System32\inetsrv\config\applicationHost.config
したがって、ServerManager
オブジェクトを使用して構成の変更をコミットすると、それに応じてファイルが更新されます。
新しいMIMEタイプを追加した後(MWAでプログラム)、applicationHost.config file
に変更はありませんでしたが、IISマネージャーウィンドウに新しいMIMEタイプが表示され、IISがこれを認識します問題のないMIMEタイプ。 OSを再表示した後も-設定ファイルには、新しく追加されたMIMEタイプが含まれていませんが、IISマネージャーウィンドウにリストされています。
私のアプリケーションプールは32ビット(Enable32BitAppOnWin64 = true
)に強制されているため、関連する構成ファイルは%WINDIR%\SysWOW64\inetsrv\Config
の下に配置する必要があると思いましたが、(存在する場合...)-変更されません。コードが更新をコミットした後。
誰かがこれを説明できますか?私は何かを逃していますか(おそらく間違ったファイルを見ていますか?)?誰かがSysWOW64\inetsrv\config
ディレクトリに光を当てることができますか?
これは、MIMEタイプを追加するための私のコードです。
ServerManager manager = new ServerManager();
ConfigurationElementCollection staticContentCollection = manager
.GetApplicationHostConfiguration()
.GetSection("system.webServer/staticContent")
.GetCollection();
//MIMETypes is a string[] array, each object is {FileExt},{MIMETypeStr}
foreach (string pair in MIMETypes)
{
string[] mimeProps = pair.Split(',');
ConfigurationElement mimeTypeEl = staticContentCollection
.Where(a =>
(string)a.Attributes["fileExtension"].Value == mimeProps[0])
.FirstOrDefault();
if (mimeTypeEl != null)
{
staticContentCollection.Remove(mimeTypeEl);
}
ConfigurationElement mimeMapElement =
staticContentCollection.CreateElement("mimeMap");
mimeMapElement["fileExtension"] = mimeProps[0];
mimeMapElement["mimeType"] = mimeProps[1];
staticContentCollection.Add(mimeMapElement);
}
manager.CommitChanges();
//At this point all is working but the config file does not reflect the change
私はあなたのコードを試したところ、うまくいきました。このMIMEタイプがサイトではなくグローバルMIMEタイプコレクションに追加されていることをご存知ですか?
また、_<staticContent>
_リストの最後に追加されます。ServerManager.CommitChanges()
を実行しても、このリストは並べ替えられません。
また、Windows 2008-R2では、_applicationHost.config
_の正しい場所は次のとおりです。
C:\ Windows\System32\inetsrv\config
このファイルを開くには、notepad.exeまたはNotePad2を使用していると思います(32ビットエディターでは開くことができません)。 Notepadは変更時にファイルを再読み込みしません。NotePad2は、ファイル変更通知(alt-F5)を表示するように指示する必要があります。
また、_.xxx
_などの異常なものを追加してみてください。更新を実行してから、構成ファイルを開いて検索してください。そこにあることを保証します。
更新:
以下のコメントに加えて、NotePad ++または32ビットエディターを使用して_applicationHost.config
_を開く方法がわかりません。 64ビットエディターであるNotePad2をダウンロードできますか。
リリース候補は問題なく動作します。
64ビットWindows 2008またはWindows 7のデフォルトのインストールでは、_applicationHost.config
_フォルダーに_C:\Windows\SysWOW64\inetsrv\Config
_があってはなりません。なぜそこに表示されるのかわかりません。
64ビット互換のお気に入りの32ビットエディター(つまり、メモ帳++)で64ビットIIS構成ファイルを開いて編集するための回避策として、次のWindowsディレクトリシンボリックリンクを作成できます。 C:\Windows\System32\inetsrv\Config
を指します。この方法では、C:\Windows\SysWOW64\inetsrv\Config
にある32ビットのConfig
ディレクトリを置換して64を指しますビットバージョン。たとえば、32ビットバージョンと64ビットバージョンの両方を必要とするアプリケーションがある場合、この方法は機能しません。
詳細については、 このMSDNブログ にアクセスすることを強くお勧めします。