IIS Express stores its configuration settings in the %USERPROFILE%\Documents\IIS Express\config\applicationHost.config file which eliminates the need for administrative permissions for changing it. As a consequence when you uninstall Visual Studio, the webserver configuration remains in the user’s profile folder.
It may happen, that you uninstall VS 2012, install VS 2013 and then when you create a new web application it behaves very strange, for example it asks for Windows authentication every time. This may be caused because you have created a website with the same name earlier in IIS Express, and its settings are preserver in the configuration file.
If you often create new web applications in Visual Studio, it is a good practice to clean up IIS configuration once in a while. Because there is no GUI for IIS Express, you can edit the applicationHost.config file directly or you can use the command line.
You can find the appcmd.exe for IIS Express in the C:\Program Files (x86)\IIS Express folder. You can use it to list the websites:
C:\Program Files (x86)\IIS Express>appcmd list site SITE "WebSite1" (id:1,bindings:http/:8080:localhost,state:Unknown) SITE "MyProject" (id:2,bindings:http/*:44441:localhost,https/*:44300:localhost,state:Unknown) SITE "WebSite1(1)" (id:3,bindings:http/*:44468:localhost,state:Unknown) SITE "WebSite2" (id:4,bindings:http/*:44465:localhost,state:Unknown)
If the names of the websites do not tell too much, then you can list the virtual directories, because that list shows the physical paths as well:
C:\Program Files (x86)\IIS Express>appcmd list vdir VDIR "WebSite1/" (physicalPath:%IIS_SITES_HOME%\WebSite1) VDIR "MyProject/" (physicalPath:W:\Projektek\MyProject) VDIR "WebSite1(1)/" (physicalPath:W:\Temp\WebSite1) VDIR "WebSite2/" (physicalPath:W:\Desktop\WebSite2)
You can even give them meaningful names by renaming them:
C:\Program Files (x86)\IIS Express>appcmd set site WebSite1(1) -name:Master SITE object "WebSite1(1)" changed
And you can delete the sites you don’t need any more:
C:\Program Files (x86)\IIS Express>appcmd delete site WebSite2 SITE object "WebSite2" deleted
for /F %i in (‘appcmd list sites /text:NAME’) DO @appcmd delete site %i
Adding on to hazzik’s command suggested above … you can create a batch file named something like “CleanupIISExpressWebSites.cmd” that contains the following lines:
@echo off
pushd “C:\Program Files (x86)\IIS Express”
for /F %%i in (‘appcmd list sites /text:NAME’) do appcmd delete site %%i
popd
If you remove all web sites from IIS Express and then open up a project in VS 2013, build and run it, then it automatically recreates the web site in IIS Express as needed.
You can verify this by monitoring the config file used by IIS Express, which can be found in:
%userprofile%\Documents\IISExpress\config\applicationHost.config
Thank you csb, this script is really useful if you want to delete all existing sites from IIS Express.
yes it working for me
yes finally this worked for me when you get a HTTP Error 500.19 – Internal Server Error – Config Error Cannot read configuration during VS 2013 debugging
Thanks for the tips. I’ve made improvements and a gist https://gist.github.com/jpolvora/39340a00b380b92b44d0594aeec46f21#file-cleaniissites-bat
Thanks a lot for sharing the batch file!
Thank you very much György! This was quite helpful.
Pingback: angular and servicestack in .net - changing the root path is a nightmare - elbsolutions.com Project List & Blog
Delete all:
appcmd.exe list site /xml | appcmd delete site /in
Thanks, Rui!
Pingback: Cleaning up IIS Express configuration | Daniel Cenáculo's Blog
Pingback: Feature update to Windows 10, version 1709 affects Visual Studio 2015 IIS Express – program faq
Why that much fuss if you can simply delete applicationHost.config?