IIS 6.0 génère des valeurs eTag au format "hash: changenumber". Le changenumber monte à chaque réinitialisation des services Internet (IIS), votre eTag n'est donc valide que pour la durée de vie de votre processus IIS. Redémarrer, le nombre augmente, hash: changenumber! = Hash: changenumber + 1. Ce qui est possible en utilisant Metabase Explorer, un utilitaire .NET pour éditer la métabase ou en éditant le fichier XML lorsque les services IIS sont arrêtés.Suppression par programme du suffixe etag (changement de numéro) de la métabase IIS6
Je veux faire cela par programme, avec le serveur en cours d'exécution, comme je peux définir toutes les autres propriétés de la métabase avec ADSI ou WMI. Pour celui-ci, cela ne semble pas possible, car la propriété (qui n'est appelée en interne que MD_ETAG_CHANGENUMBER) ne semble pas avoir de nom de propriété correspondant.
Voici un exemple du problème dans VBScript:
set obj=GetObject("IIS://localhost/W3svc")
WScript.Echo "Log type: " & obj.LogType
WScript.Echo "Change number: " & obj.MD_ETAG_CHANGENUMBER
La sortie:
Log type: 1 etag.vbs(3, 1) Microsoft VBScript runtime error: Object doesn't support this property or method: 'obj.MD_ETAG_CHANGENUMBER'
Je veux être en mesure de mettre cette valeur en C#. Si vous n'avez pas arrêté IIS, en définissant la valeur dans le XML et en la redémarrant, existe-t-il une méthode pour définir cette valeur par programme?
Ma meilleure pensée est (ab) en utilisant le IISMbLib.dll fourni avec Metabase Explorer, donc si quelqu'un a l'expérience de l'utiliser, j'aimerais l'entendre.
Références:
- MD_ETAG_CHANGENUMBER Metabase Property (IIS 6.0)
- IIS forums thread discussing the problem, with no resolution