Je suis actuellement en train de jouer avec l'espace de noms Microsoft.Web.Administration (MWA) afin d'ajuster notre application pour configurer IIS 7.5 avec la nouvelle API. J'ai compris que tous les changements au niveau de IIS doivent être exprimés dans le fichier suivant (je suis sur Win2K8-R2) :
%WINDIR%\\System32\\inetsrv\\config\\applicationHost.config
Ainsi, lorsque j'utilise la fonction ServerManager
pour valider les changements de configuration, le fichier doit être mis à jour en conséquence.
Après avoir ajouté un nouveau type de MIME (programmatique avec MWA), je n'ai vu aucun changement dans le fichier applicationHost.config file
Mais je vois le nouveau type MIME dans la fenêtre du gestionnaire IIS et IIS reconnaît ce type MIME sans problème. Même après avoir redémarré le système d'exploitation, le fichier de configuration ne contient pas le nouveau type MIME, mais la fenêtre du gestionnaire IIS le mentionne.
Parce que mes pools d'applications sont contraints de fonctionner en 32 bits ( Enable32BitAppOnWin64 = true
), j'ai pensé que le fichier de configuration correspondant devait être situé sous %WINDIR%\SysWOW64\inetsrv\Config
mais (si elle existe...) - elle ne change pas non plus après la validation des mises à jour par le code.
Quelqu'un peut-il expliquer cela ? Est-ce que j'ai raté quelque chose (en regardant le mauvais fichier peut-être ?)? Quelqu'un peut-il m'éclairer sur le SysWOW64\inetsrv\config
répertoire ?
Voici mon code pour ajouter le type MIME :
ServerManager manager = new ServerManager();
ConfigurationElementCollection staticContentCollection = manager
.GetApplicationHostConfiguration()
.GetSection("system.webServer/staticContent")
.GetCollection();
//MIMETypes is a string[] array, each object is {FileExt},{MIMETypeStr}
foreach (string pair in MIMETypes)
{
string[] mimeProps = pair.Split(',');
ConfigurationElement mimeTypeEl = staticContentCollection
.Where(a =>
(string)a.Attributes["fileExtension"].Value == mimeProps[0])
.FirstOrDefault();
if (mimeTypeEl != null)
{
staticContentCollection.Remove(mimeTypeEl);
}
ConfigurationElement mimeMapElement =
staticContentCollection.CreateElement("mimeMap");
mimeMapElement["fileExtension"] = mimeProps[0];
mimeMapElement["mimeType"] = mimeProps[1];
staticContentCollection.Add(mimeMapElement);
}
manager.CommitChanges();
//At this point all is working but the config file does not reflect the change