IIS 6.0 генерирует значения eTag в формате «hash: changenumber». Номер изменения увеличивается каждый раз при сбросе IIS, поэтому ваш eTag действителен только в течение всего срока службы IIS. Перезагрузка, число увеличивается, хэш: номер изменения! = Хэш: номер изменения + 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, поэтому, если у кого-то есть опыт использования этого, я хотел бы услышать это.
Ссылки: