IISExpress - Configuration file is not well-formed XML
[UPDATE 2013-04-26]
After consulting with my brains trust (thanks Damo), I tried one last thing. I manually copied the folders IISExpress had created in the c:\temp\IISExpress folder back into my MyDocuments\IISExpress folder, and VS seems happy. I’m calling this one closed for now.
[UPDATE 2013-04-23]
This is only half solved. It looks like VS still insists on launching IISExpress with a specific command line switch pointing at the old config location.
I installed a new machine the other day and on loading a VS project that uses IISExpress, I got the following error:
Filename: \\?\UNC\[our My Docs Server]\MyDocs1\acoat\My Documents\IISExpress\config\applicationHost.config
Line number: 1
Error: Configuration file is not well-formed XML
Turns out that IISExpress is writing config information to my My Documents folder, but because I’ve got folder redirection turned on, this is a UNC path, not a local path. It looks like an applicationHost.config file is created, but it’s 0 bytes and the IISExpress process doesn’t have permission to write to it.
Fortunately, from IISExpress 8 onwards, there’s a registry key you can setr to point IISExpress at another home folder.
Thanks to this post on StackOverflow, I was pointed to the IIS 8.0 Express Readme FIle, which, in the New Features section says:
Changing the User Home Directory
IIS 8.0 Express supports changing the user's home directory, which is mapped to the %IIS_USER_HOME% variable in configuration. By default this path is located at %UserProfile%\Documents\IISExpress, but users can change this by setting a CustomUserHome registry property in HKCU\Software\Microsoft\IISExpress, or by specifying the "/userhome" parameter when launching iisexpress.exe.
So, I fired up RegEdit, added a new IISExpress key under HKCU\Software\Microsoft and then added a string key CustomUserHome set to "c:\Temp\IISExpress" (a folder I’d created manually) and IISExpress starts in the expected manner and creates all of its config, logs and tracelogfiles folders (and their accompanying files) there and starts successfully.