首先介绍一下我想要实现的目标的背景。
我有一个客户端应用程序,该应用程序正在利用 ArcGIS Server 和 IIS 7 提供的 REST 服务。我希望能够在将响应发送到客户端之前修改响应(删除或添加参数)。因此,我正在使用 Visual Studio 2010 和 .NET 3.5 开发自定义 HttpModule 来拦截和修改响应。
但是,我在调试自定义 HttpModule 时遇到困难。当以管理员身份运行时,我可以使用 Visual Studio 2010 附加到 IIS 进程,但是,执行 Web 3rd 方 Web 应用程序不会导致命中任何断点。我可以确认我的模块正在运行,因为它能够将内容写入磁盘上的文件。
注意事项
- 第 3 方 Web 应用程序在 IIS 7 中默认网站下的虚拟目录(例如 arcgis/rest/)中运行。它在自己的应用程序池中运行,该应用程序池配置为 . NET 2.0 而不是 4.0。
- 自定义模块安装在 Web 应用程序 bin 文件夹中,并使用 web.config 文件而不是 IIS 7 模块管理进行配置。
总结一下:如何使用 Visual Studio 2010 调试为第 3 方 Web 应用程序开发的自定义 HttpModule?
最佳答案
需要检查的一些事项:
确保您拥有正确的流程。 ASP.NET 可以决定生成多个工作进程,特别是当应用程序池之间的进程标识不同时,等等。
确保在注册模块的 Web 应用程序的 web.config 的编译元素中设置了 debug="true"
确保模块正在 Debug模式下编译(即:正在生成调试符号)。
调用应用程序应该是无关的。您应该能够通过使用网络浏览器向注册模块的 virdir 发出请求来测试这一点。
关于debugging - 如何将 Visual Studio 2010 连接到 IIS 7 以调试为现有第 3 方 Web 应用程序编写的自定义 HttpModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3016908/