当我们使用Visual Studio调试的时候,通常我们会选择VS自带的ASP.NET Developerment Server(也是默认选项),当第一次调试的时候(按F5或Ctrl+F5不调试直接打开),Developerment Server会自动分配一个未被占用的端口号。
这样做在大多数情况下不会有啥问题,但Developerment Server毕竟不是IIS,有一些操作无法达到和IIS一样的效果,譬如当我们使用某些方法获取客户端以及服务器IP的时候,使用 Developerment Server就会出现一些混乱(又如有时候localhost无法匹配正确的域名格式)。这就造成了开发环境和使用环境不一致的情况。在这样种情况下,我们就需要使用IIS或者自定义的进程辅助调试,以确保开发环境模拟的真实性。
依靠VS设置,使用IIS替代Developerment Server的方法大致有两种,列举如下:
1、附加进程法。
单击工具栏中的 Debug -> Attach to Process (调试 -> 附加到进程)在Available Processess(可用进程)中,找到IIS的进程w3wp.exe,单击"Attach(附加)"就行了。
2、设置服务器参数法。
打开Web启动项目属性,在左侧打开Web页,在这里可以看到开始项目的行为设置以及“Servers”(服务器)这个选项。在“Servers”中,有 一个"User Custom Web Server"(使用自定义Web服务器)的选项,选中它,并且在下面的URL中输入IIS中当前项目的URL即可(如 http://127.0.0.1:8080/)。(在Servers中,我们同样可以修改localhost的端口号等等,这是一个很有用的选项。)
对于VS2010SP1及以上版本,在Servers中,同样有一个"Use Local IIS Web server"(使用本地IISWeb服务器)的选项,在该选项下可以通过IIS Express服务器进行程序调试,该服务器继承了VS服务开发器和IIS Web服务器的优点。
使用这个选项需要IIS6.0,如果您只安装了IIS7.0而没有安装IIS6.0兼容服务的话,使用User Custom Web Server是最佳的选择。
以上设置完成之后,保存并启动调试就可以在IIS中调试了。
使用附加进程法调试js时,对于普通页面中的js可以直接在js代码中加断点进行调试。异步加载的页面由于无法找到该页面,所以可以采用在要调用的js函数中加debugger的方式进行调试。
参考文档:
ASP.NET VS2010配合 IIS 进行调试:http://www.zhixing123.cn/net/42267.html
Debug your ASP.NET Application while Hosted on IIS:http://www.codeproject.com/Articles/37182/Debug-your-ASP-NET-Application-while-Hosted-on-IIS
Debug your ASP.NET Application which is hosted on "Remote IIS Server":http://www.codeproject.com/Articles/38132/Remote-IIS-Debugging-Debug-your-ASP-NET-Applicatio