簡體   English   中英

Global.asax Application_Error無法在IIS上觸發

[英]Global.asax Application_Error not firing on IIS

我有一個ASP.NET MVC 2頁面。 在發生錯誤或異常期間,不會在IIS7上觸發Global.asax中的Application_Error方法。

**但是如果我從VS2010(localhost:someport)運行Web應用程序,則確實會觸發

我的代碼(C#):

protected void Application_Error(object sender, EventArgs e)
{
  Exception exception = Server.GetLastError();
  string requestedUrl = HttpContext.Current.Request.Url.ToString();

  Response.Clear();
  // do something
  Server.ClearError();
  Server.Redirect("Error");
}

我的配置:

<customErrors mode="On" defaultRedirect="~/Error">
</customErrors>

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

請幫忙。

這是因為您的Web配置設置將覆蓋默認行為。 您將需要禁用此設置(customErrors =“ Off”並刪除defaultRedirect(或有條件地設置正確的狀態代碼,以使未設置的錯誤落入Application_Error事件)。如果禁用此設置,則可以處理Application_Error中的錯誤事件,然后重定向用戶或顯示該事件的消息此Web配置設置正在處理錯誤,只有未處理的錯誤才會冒泡到該事件。

還有一件事。
不會為IIS上標記為HandleError屬性的類/方法中引發的異常觸發Application_Error。
如果您在asp.net開發服務器上運行您的應用程序卻會觸發,但不適用於真正的IIS。 (我陷入了這個陷阱)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM