![](/img/trans.png)
[英]ASP.NET 4 Web Forms Using Routing - Application_Error Not Called on Error
[英]ASP.NET Web service ignoring Application_Error and UnhandledException event
我的 Web 服務中有一個被忽略的異常事件的小問題。
這是我的 Global.asax.cs 文件:
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
namespace AcmeDemoApp
{
public class Global : System.Web.HttpApplication
{
private static Logger logger = LogManager.GetCurrentClassLogger();
protected void Application_Start(object sender, EventArgs e)
{
logger.Debug("Application_Start");
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
protected void Session_Start(object sender, EventArgs e)
{
logger.Debug("Session_Start");
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
logger.Debug("Application_BeginRequest");
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
logger.Debug("Application_AuthenticateRequest");
}
protected void Application_Error(object sender, EventArgs e)
{
logger.Debug("Application_Error");
}
protected void Session_End(object sender, EventArgs e)
{
logger.Debug("Session_End");
}
protected void Application_End(object sender, EventArgs e)
{
logger.Debug("Application_End");
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
logger.Debug("CurrentDomain_UnhandledException");
}
}
}
在我執行請求之后。 我從 Web 服務收到此錯誤。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>soap:Receiver</soap:Value>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang="en">System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.ArgumentException: Error
--- End of inner exception stack trace ---</soap:Text>
</soap:Reason>
<soap:Detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>
在 NLog 的日志文件中,我只看到:
[2016-05-01 02:11:25.3629] [Info] Application_BeginRequest
[2016-05-01 02:11:27.3861] [Info] Application_AuthenticateRequest
為什么 UnhandledException 被忽略? 我還必須使用其他事件或方法來獲取所有soap
錯誤嗎?
或者你能給我一個提示如何解決這個問題?
提前感謝您的任何想法!
使用UnhandledExceptionHandler。
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
一個 Web 應用程序可以由多個 Web 服務組成。 但是,Global.asax 語法文件中的 Application_Error 事件不能用於全局異常處理。 Web 服務的 HttpHandler 使用 Web 服務執行時發生的任何異常,並在調用 Application_Error 事件之前將其轉換為 SOAP 錯誤。 構建 SOAP 擴展以在全局異常處理程序中處理 Web 服務異常。 SOAP 擴展可以檢查 ProcessMessage 方法中是否存在異常。
同一主題的另一個討論: 為什么 global.asax Application_Error 方法沒有捕獲 ASMX 服務拋出的異常?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.