Forum Discussion

David Levine's avatar
David Levine
Brass Contributor
Aug 27, 2019
Solved

Manage IIS Settings via ApplicationHost.Config vs. Web.Config

I have an IIS setup where multiple websites exist that all share the same document root. Each of the websites have a specific default document though. 

This has been managed in the past by manually editing the applicationHost.config file, adding a section like

<location path="<a href="http://www.website3.com" target="_blank">www.website3.com</a>">
  <system.webServer>
    <defaultDocument>
      <files>
        <add value="website3-home.html" />
      </files>
    </defaultDocument>
  </system.webServer>
</location>

 

I am trying to script some of this setup, and I am trying to use the WebAdministration powershell module, and am looking at AppCmd, but when I try to set a Default Document setting this way, the setting gets added to Web.Config... and since the websites have a shared document root, they all share the same Web.Config, and this causes a problem.

 

Is there a way when using WebAdministration or AppCmd to specify that I want the change made specifically in applicationHost.config, not Web.config?

 

I appreciate any suggestions!

~D

 

5 Replies

    • David Levine's avatar
      David Levine
      Brass Contributor

      Dave Patrick 

       

      Thanks for the reply Dave;
      So, I am looking at the following:
      https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/jj635852(v=ws.11)
      and
      https://docs.microsoft.com/en-us/iis/configuration/system.webserver/defaultdocument/

       

      It seems the syntax I want to specifically write the config to applicationHost.config is /COMMIT:APPHOST but I cant seem to figure out the rest of the syntax... keep getting errors:

       

      PS C:\Windows\system32\inetsrv> .\appcmd.exe set config "testsite2" /section:defaultDocument /enabled:true /+files.[value='site2-home.html'] /commit:APPHOST
      ERROR ( message:Malformed collection indexer; format is [@position,name='value',name2='value2',...]. The @position specifier is optional, and be '@start', '@end', or '@N' where N is a numeric index i
      nto the collection. )
      PS C:\Windows\system32\inetsrv>

Resources