J'essaie d'obtenir la liste des types MIME connus d'un serveur IIS (which you can see was asked and and answered by me 2 years ago). La réponse collée copie implique:IIS: Comment obtenir le chemin de la métabase?
GetObject("IIS://LocalHost/MimeMap")
msdn
GetObject("IIS://localhost/mimemap")
KB246068
GetObject("IIS://localhost/MimeMap")
Scott Hanselman's Blog
new DirectoryEntry("IIS://Localhost/MimeMap"))
Stack Overflow
new DirectoryEntry("IIS://Localhost/MimeMap"))
Stack Overflow
New DirectoryServices.DirectoryEntry("IIS://localhost/MimeMap")
Velocity Reviews
Vous avez l'idée. Tout le monde convient que vous utilisez un chemin magique iis: // localhost/mimemap. Et cela fonctionne très bien, sauf pour les moments où ce n'est pas le cas.
Le seul indice que je peux trouver la raison pour laquelle il échoue, is from an IIS MVP, Chris Crowe's, blog:
string ServerName = "LocalHost";
string MetabasePath = "IIS://" + ServerName + "/MimeMap";
// Note: This could also be something like
// string MetabasePath = "IIS://" + ServerName + "/w3svc/1/root";
DirectoryEntry MimeMap = new DirectoryEntry(MetabasePath);
Il y a deux indices ici:
- Il appelle
iis://localhost/mimemap
le Chemin de la métabase. Ce qui me semble être une sorte de "chemin" vers une "métabase". Il dit que le chemin à la métabase pourrait être quelque chose d'autre; et il donne un exemple de ce que cela pourrait être.
i En ce moment, et la planète entière, sont hardcoding la "Metabasepath" comme
iis://localhost/MimeMap
Que faut-il vraiment? Que devrait faire le code pour construire un MetabasePath valide?
Note: Je ne reçois pas une erreur d'accès refusé, l'erreur est la même lorsque vous avez un Metabasepath non valide, par exemple iis://localhost/SoTiredOfThis
La question ne vous permet pas de savoir si une exception de sécurité est levée? – Kev
Ce n'est pas une exception de sécurité. L'appel à 'DirectoryEntry (MetabasePath)' renvoie bien, et il renvoie un objet. L'erreur survient lorsque vous essayez d'accéder à l'une des propriétés de l'objet DirectoryEntry renvoyé. Ils donnent tous une erreur COM "non spécifiée". Cela se produit lorsque le chemin n'est pas valide, par ex. "' iis: // localhost/asdfadsf' " –
@Ian - voir la mise à jour de ma réponse. – Kev