HttpModule不从WebMethod(aspx或asmx)捕获ThreadAbortException

时间:2014-01-14 15:11:33

标签: c# asp.net httpmodule webmethod

我有一个HTTPModule:

public class MyErrorModule : IHttpModule
{
  public void Init(HttpApplication context)
  {
    context.Error += new EventHandler(Application_Error);
  }

  public void Application_Error(object sender, EventArgs e)
  {
    // Handle error
  }
}

在web.config中声明(IIS7.5集成):

<system.webServer>
  <!-- some more stuff -->
  <modules runAllManagedModulesForAllRequests="true">
    <add name="ApplicationErrorModule" preCondition="" type="xxxxx"/>
  </modules>
  <!-- some more stuff -->
</system.webServer>

我试过没有runAllManagedModulesForAllRequests="true"

我在正常的webs.aspx.cs中有一个WebMethod(它是一个大项目的一部分,我希望我不必在asmx中移动所有内容......):

[WebMethod]
public static Model.Response GetDetails(string email)
{
  // Do some stuff and return JSON data
}

我使用JQuery和AJAX来调用

https://servername/webs.aspx/GetDetails

在正常情况下(没有未处理的Exception)事情很好,web-service返回我需要的东西。但有些情况下我需要在DLL中调用可以执行

的代码
Context.Redirect(page,true);

生成ThreadAbortException

我希望HttpModule会有所帮助,但是当THreadAbortException发生时,它不会进入模块。

我跟着一些suggestions使用了

<customErrors mode="Off" />

但它没有帮助。

ASP.Net在哪里捕获?我正在使用4.0。如何在Handler中捕获异常?

我在HTTP响应标头中看到一个jsonerror=true,这使得我有另一个地方被捕获。我没有看到其他自定义模块会捕获异常。

更新

我尝试使用webs.asmx webservice并使用正确的注释(ScriptService等等),但仍然无法捕获ThreadAbortException

0 个答案:

没有答案