How can I manipulate handler mappings in IIS7 using the Microsoft.Web.Administration namespace?

When manipulating handler mappings using a namespace, is Microsoft.Web.Administrationthere a way to remove it <remove name="handler name">at the site level.

For example, I have a site that inherits all handler mappings from the global handler mappings configuration. The applicationHost.configtag <location>initially looks like this:

<location path="60030 - testsite-60030.com">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication userName="" />
      </authentication>
    </security>
  </system.webServer>
</location>

To remove the handler, I use code similar to this:

string siteName = "60030 - testsite-60030.com";
string handlerToRemove = "ASPClassic";

using(ServerManager sm = new ServerManager())
{
  Configuration siteConfig = 
    serverManager.GetApplicationHostConfiguration();
  ConfigurationSection handlersSection = 
    siteConfig.GetSection("system.webServer/handlers", siteName);
  ConfigurationElementCollection handlersCollection = 
    handlersSection.GetCollection();

  ConfigurationElement handlerElement = handlersCollection
    .Where(h => h["name"].Equals(handlerMapping.Name)).Single();

  handlersCollection.Remove(handlerElement);
}

The result is a <location>site tag similar to:

<location path="60030 - testsite-60030.com">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication userName="" />
      </authentication>
    </security>    
    <handlers>
      <remove name="ASPClassic" />
    </handlers>
  </system.webServer>
</location>

So far so good. However, if I re-add the handler ASPClassic, this will result in:

<location path="60030 - testsite-60030.com">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication userName="" />
      </authentication>
    </security>    
    <handlers>
      <remove name="ASPClassic" />
      <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" />
    </handlers>
  </system.webServer>
</location>

-, , . <remove name="ASPClassic" /> Microsoft.Web.Administration?

+3
1

IIS, , , ​​ . , Win7 IIS 7.5, . COM, :

": 'add' 'name', 'ASPClassic'"

, , "" , M.W.A. API , .

+2

Source: https://habr.com/ru/post/1721847/


All Articles