IIS 6.0は、 "hash:changenumber"の形式でeTag値を生成します。変更番号はIISがリセットされるたびに上がるため、eTagはIISプロセスの有効期間中のみ有効です。再起動、数値の上昇、ハッシュ:changenumber!=ハッシュ:changenumber + 1。メタベースからetagサフィックス(変更番号)をプログラムで削除するIIS6
The fix for this is to hard-code the changenumberメタベースを編集するためのMetabase Explorer、.NETユーティリティ、または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の値を設定してからもう一度開始するのは、プログラムでこの値を設定する方法ですか?
私は、(ab)Metabase Explorerに付属のIISMbLib.dllを使用しているので、誰かがこれを使用している経験があれば、それを聞いてみたいです。
参考文献:
- MD_ETAG_CHANGENUMBER Metabase Property (IIS 6.0)
- IIS forums thread discussing the problem, with no resolution