Debugging 如何将Visual Studio 2010连接到IIS 7以调试为现有第三方web应用程序编写的自定义HttpModule

Debugging 如何将Visual Studio 2010连接到IIS 7以调试为现有第三方web应用程序编写的自定义HttpModule,debugging,visual-studio-2010,httpmodule,Debugging,Visual Studio 2010,Httpmodule,首先介绍一下我正在努力实现的目标的背景知识 我有一个客户端应用程序,它正在利用ArcGIS Server和IIS 7提供的REST服务。我希望能够在将响应发送到客户端之前修改响应(删除或添加参数)。因此,我正在使用VisualStudio2010和.NET3.5开发一个定制的HttpModule来拦截和修改响应 但是,调试自定义HttpModule时遇到困难。当以管理员身份运行Visual Studio 2010时,我可以使用它连接到IIS进程,但是,执行web第三方web应用程序不会导致命中我

首先介绍一下我正在努力实现的目标的背景知识

我有一个客户端应用程序,它正在利用ArcGIS Server和IIS 7提供的REST服务。我希望能够在将响应发送到客户端之前修改响应(删除或添加参数)。因此,我正在使用VisualStudio2010和.NET3.5开发一个定制的HttpModule来拦截和修改响应

但是,调试自定义HttpModule时遇到困难。当以管理员身份运行Visual Studio 2010时,我可以使用它连接到IIS进程,但是,执行web第三方web应用程序不会导致命中我的任何断点。我可以确认我的模块正在运行,因为它能够将内容写入磁盘上的文件

值得注意的是

  • 第三方web应用程序正在IIS 7中默认网站下的虚拟目录(例如arcgis/rest/)中运行。它在自己的应用程序池下运行,该应用程序池配置为.NET 2.0而不是4.0
  • 自定义模块安装在web应用程序bin文件夹中,并已使用web.config文件而不是IIS 7模块管理进行配置
  • 总结:如何调试使用Visual Studio 2010为第三方web应用程序开发的自定义HttpModule?

    需要检查的几件事:

    • 确保你有正确的流程。ASP.NET可以决定生成多个工作进程,尤其是在应用程序池等中的进程标识不同的情况下

    • 确保在注册模块的web应用程序的web.config的compilation元素中设置了debug=“true”

    • 确保模块正在调试模式下编译(即:正在生成调试符号)


    调用应用程序应该是无关的。您应该能够通过使用web浏览器向注册模块的virdir发出请求来测试这一点。

    我确认我使用windows任务管理器连接到了正确的进程,并且应用程序是在调试模式下编译的。根据建议,我修改了web.config文件,以便debug=“true”。当我连接到进程时,Visual Studio警告我调试符号未通过断点加载。但是,只有当我通过windows任务管理器的调试选项进行连接时,才会出现这种情况。如果使用VisualStudio附加,则不会出现此类警告。我正在使用web浏览器对此进行测试,并向注册模块的虚拟目录发出请求。我唯一能想到的是,他们注册模块的配置不完整,并且从未加载到工作进程中,因此没有符号,显然模块根本没有处理请求。谢谢!发现我是在启用版本配置的情况下意外发布的。