2016-11-29 37 views
1

我想是這樣如何在ApplicationHost.config中爲C#上的IIS服務器上的所有網站添加HttpModule?

public string[] RegisterInApplicationConfig() 
    { 
     using (ServerManager serverManager = new ServerManager()) 
     { 
      Configuration config = serverManager.GetApplicationHostConfiguration(); 
      var section = config.GetSection("location/system.webServer/modules"); 

     } 
    } 

,但錯誤,我得到的是 -

的配置,因爲它缺少一個部分聲明部分location/system.webServer/modules無法讀取。

我指從增加後的HttpModule -

How do I register a HttpModule in the machine.config for IIS 7?

所以在ApplicationHostConfig基本上,我需要去

<location path="" overrideMode="Allow"> 
    <system.webServer> 

    <modules> 
     <add name="IsapiFilterModule" lockItem="true" /> 

回答

1

所以我找到了解決辦法之後,一些打&試驗。可能有助於有人在面向未來

我需要的「system.webServer/modules」部分做GetCollection

Configuration config = serverManager.GetApplicationHostConfiguration(); 
      var section = config.GetSection("system.webServer/modules", ""); 
      var collection = section.GetCollection(); 
      var element = collection.CreateElement(); 
      element.Attributes["name"].Value = "MyHttpModule"; 
      element.Attributes["type"].Value = MyHttpModule.XXXModule, MyHttpModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bc88fbd2dc8888795"; 
      collection.Add(element); 
      serverManager.CommitChanges(); 
相關問題