2009-07-12 4 views
0

У меня есть приложение, размещенное на IIS7, работающем в интегрированном режиме. Я обработки ошибок, помещая следующее в Web.config: (. Потому что это режим интегрировал < CustomErrors> блок не используется)Обработка исключений в IIS7 Integrated Pipeline Mode

<httpErrors errorMode="DetailedLocalOnly" existingResponse="Replace" 
      defaultResponseMode="ExecuteURL" defaultPath="/Error.aspx"> 
    <remove statusCode="500" /> 
    <error statusCode="500" path="/Error.aspx" responseMode="ExecuteURL" /> 
</httpErrors> 

Я хочу, чтобы автоматически отправлять электронную почту каждый раз, генерируется исключение. Но проблема в том, что в Error.aspx я не могу понять, как получить ссылку на исключение. Я пробовал это:

Dim oEx As Exception = Server.GetLastError() 

Но он ничего не возвращает. Я также пробовал HttpContext.Current.Error() и HttpContext.Current.AllErrors, и они тоже не работают.

На странице пользовательской ошибки, запущенной в интегрированном режиме IIS7, как мне получить ссылку на исключение обработанных?

ответ

0

Вы должны перехватить ошибку, либо в Global.asax или пользовательский реализации IHttpModule следующим образом:

public class UnhandledExceptionHandlerModule : IHttpModule { 
    private HttpApplication application; 

    public void Init(HttpApplication application) 
    { 
     this.application = httpApplication; 
     this.application.Error += Application_Error; 
    } 

    public void Dispose() 
    { 
     application = null; 
    } 

    protected internal void Application_Error(object sender, EventArgs e) 
    { 
     application.Transfer("~/Error.aspx"); 
    } 
} 

Тогда в Error.aspx.cs:

protected void Page_Load(object sender, EventArgs e) { 
    Response.StatusCode = 500; 

    // Prevent IIS from discarding our response if 
    // <system.webServer>/<httpErrors> is configured. 
    Response.TrySkipIisCustomErrors = true; 

    // Send error in email 
    SendEmail(Server.GetLastError()); 

    // Prevent ASP.NET from redirecting if 
    // <system.web>/<customErrors> is configured. 
    Server.ClearError(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^