IIS 6.0 генерирует значения eTag в формате «hash: changenumber». Номер изменения увеличивается каждый раз при сбросе IIS, поэтому ваш eTag действителен только в течение всего срока службы вашего процесса IIS. Перезагрузка, номер увеличивается, hash: changenumber! = Hash: changenumber + 1.
Чтобы исправить это, необходимо жестко запрограммировать номер изменения, что возможно с помощью Metabase Explorer. , служебная программа .NET для редактирования метабазы или путем редактирования файла XML, когда службы IIS остановлены.
Я хочу сделать это программно, при работающем сервере, как будто я могу установить все остальные свойства метабазы с помощью 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) использовать IISMbLib.dll, который поставляется с Metabase Explorer, поэтому, если у кого-то есть опыт использования этого, я хотел бы его услышать.
Использованная литература: