To enable ASP debugging in IIS Express:
1. Locate the appropriate applicationhost.config file to update based on your version of Visual Studio.
- Visual Studio 2015 and later: Each web app has its own applicationhost.config file that you need to modify. Each file is located in {solution directory}\.vs\config (Keep in mind .vs is a hidden folder)
- Before Visual Studio 2015: You can enable debugging for all web apps by modifying applicationhost.config located in %USERPROFILE%\Documents\IISExpress\config
(If you cannot find applicationhost.config, it is because the web app has not been launched in IISExpress yet. So go ahead and launch your app and then the file will be created.)
2. Open applicationhost.config in a text editor and change the <system.webServer><asp>
element to:
<asp scriptErrorSentToBrowser="true" enableParentPaths="true" bufferingOn="true" errorsToNTLog="true" appAllowDebugging="true" appAllowClientDebug="true">
<cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
<session allowSessionState="true" />
<limits />
</asp>
Start debugging:
- Start the web site without debugging.
- In Visual Studio, open the "Attach to Process" dialog.
- Change Attach to to Script.
- Select iisexpress.exe and click Attach.
To set breakpoints:
- Once you are debugging, browse to the page you want to debug. (Yes, before you set any breakpoints.)
- Return to VS, go to Solution Explorer, and you'll see a "Script Documents" node that lists the files cached by IIS Express. Expand this node until you find the .asp page that needs the breakpoints. (The page won't appear in this list until you have browsed to it per the previous step.)
- Open this file and set breakpoints here (not the original source file).
- Refresh or re-navigate to the page in order to hit the breakpoints.
Keep in mind that if you need to make changes to this page, make them in the original source file, not the version with the breakpoints. And when you save those changes the file is removed from the IIS Express cache so you have to repeat these steps to set the breakpoints again.
For more details see Dixin's Blog.