Why do I randomly get a "error to use section registered as allowDefinition='MachineToApplication'" when building an MVC project?
asp.net-mvc, web-config
Solution
I assume you're using the publish feature. I'm getting this error when using publish to a file directory.
Publishing your app creates a temporary copy of your application in the `\obj\debug\package\packagetmp\web.config` directory.
That web.config confuses the IDE which thinks it is an application, but its not in a virtual directory so you get the error.
Workaround:
It's a simple workaround to add this to a pre-build command:
del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config"
Failed workarounds:
Changing the directory for 'Location where package will be created' under 'Package/Publish Web' settings doesn't seem to have an effect - even if you get clever and try to put it outside the project root with ......
Creating an actual virtual directory in IIS for 'PackageTmp' didn't fix it either!
CONNECT ISSUE:
http://connect.microsoft.com/VisualStudio/feedback/details/503254/web-config-in-package-folder-makes-it-impossible-to-compile-debug
I hope they fix this in the RC!
Problem
I have seen a few questions on SO about a similar error when deploying a website, but I seem to randomly get this error when building an ASP.NET MVC website in Visual Studio. Performing a clean usually fixes it, but is there any way to avoid this completely? It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. d:...\obj\debug\package\packagetmp\web.config Note that it is complaining about the root `web.config`, not the one from the `Views` subdirectory.