IIS 6.0 は、"hash:changenumber" の形式で eTag 値を生成します。変更番号は IIS がリセットされるたびに増加するため、eTag は IIS プロセスの存続期間中のみ有効です。再起動、番号が上がり、hash:changenumber != hash:changenumber+1.
これを修正するには、 changenumber をハードコーディングします。これは、メタベースを編集するための .NET ユーティリティである Metabase Explorer を使用するか、IIS サービスが停止しているときに XML ファイルを編集することで可能です。
ADSI または WMI のいずれかを使用して他のすべてのメタベース プロパティを設定できるように、サーバーを実行してプログラムでこれを行いたいと考えています。これについては、プロパティ (MD_ETAG_CHANGENUMBER として内部的にのみ参照される) が一致するプロパティ名を持っていないように見えるため、可能ではないようです。
VBScript の問題の例を次に示します。
set obj=GetObject("IIS://localhost/W3svc")
WScript.Echo "Log type: " & obj.LogType
WScript.Echo "Change number: " & obj.MD_ETAG_CHANGENUMBER
出力:
Log type: 1 etag.vbs(3, 1) Microsoft VBScript runtime error: Object doesn't support this property or method: 'obj.MD_ETAG_CHANGENUMBER'
この値を C# で設定できるようにしたいと考えています。IIS を停止し、XML で値を設定して、再度開始する以外に、この値をプログラムで設定する方法はありますか?
私の最善の考えは、Metabase Explorer に付属の IISMbLib.dll を (ab) 使用することです。したがって、これを使用した経験のある方がいらっしゃいましたら、ぜひお聞かせください。
参考文献: