簡體   English   中英

ASP.NET Web 服務忽略 Application_Error 和 UnhandledException 事件

[英]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. ---&gt; 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 方法中是否存在異常。

處理和拋出 XML Web 服務中的異常

同一主題的另一個討論: 為什么 global.asax Application_Error 方法沒有捕獲 ASMX 服務拋出的異常?

暫無
暫無

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

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