【问题标题】:C#, Debugging an HTTPHandlerC#,调试 HTTPHandler
【发布时间】:2010-11-07 09:42:43
【问题描述】:

我有一个 HTTP 处理程序,它是我们应用程序 90% 的入口点。基本上它会收到一个请求,处理大量数据并返回一个非常具体的文件,具体取决于它所嵌入的客户端和网页等。我已经设置了 Application Mappings 以便所有 .kab 扩展名指向 C:\Windows...\aspnet_isapi.dll。我将 HttpHandler DLL 添加到我网站的 BIN 目录中。当我尝试浏览测试页面时,iFrame 显示 404。我在设置 HttpHandler 时是否遗漏了什么?

至于调试我的代码,我已经尝试附加,但我一直在页面上收到 404 错误,并且它从未进入我的代码。 在调试模式下绑定到项目的最佳实践方法是什么?


测试的基本设置(一台机器上的所有本地设置):

  • Windows XP Pro 上的 IIS 5.1 - 运行简单的 Jane default.aspx:




标签: c# debugging httphandler


【解决方案1】:

您还需要将 .cab 扩展名映射到 web.config 文件中的处理程序类。

见here。

例如

<httpHandlers>
 <add verb="*" path="*.cab"
   type="My.Assembly,My.Assembly.Handler, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=whatever" 
   validate="false"/>
....

【讨论】:

  • 啊——对。添加了 httpHandlers 部分,现在我没有收到 404 错误。但是,我无法进入代码进行调试。我将编译后的 DLL 复制到网站 BIN 目录,并在 VS2005 中附加到 inetinfo.exe 进程中,在我的 ProcessRequest(HttpContext context) 方法中设置断点,它根本不会中断。有什么建议吗?
  • 完美!我将它添加到我的处理程序的顶部:#if DEBUG // 这只是为了在 VS2005 中进行调试... context.Response.ContentType = "text/html"; context.Response.Write("处于调试模式。调试器正在启动..."); // 调试: // 1) 确保 Build Type 设置为 Debug // 2) 构建项目 // 3) 将 bin & pdb 复制到 iis webroot\bin 目录 // 4) 在下面设置断点// 5) Ctrl-Alt-P 然后选择 aspnet_wp.exe // 6) 启动 Web 浏览器并导航到 localhost/default.aspx // 7) 开始调试 #endif
  • 我通常在 ASP.NET 项目中完成所有这些工作,在调试器下启动项目会处理细节。 VS 提供了各种启动选项,包括启动特定页面或程序。
【解决方案2】:

返回应用程序映射并确保未选中“验证文件存在”复选框。这将使 .kab 的任何内容都由 .NET 处理。

【讨论】:

    【解决方案3】:

    标记为正确答案的只有一条评论;必须反过来指定类型,即先指定处理程序,然后指定程序集名称(例如:type="My.Assembly.Handler, My.Assembly, ...")

    【讨论】:

      猜你喜欢
      • 2010-11-14
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多