3

一般的なエラー処理を実装しようとしています。

public partial class SomePage : System.Web.UI.Page
{
//...
    [WebMethod()]
    public static int SomeMethod()
    {
        //... some code
        //... exception
    }
//...
}

通常のリクエストは global.asax で処理できますが、静的な WebMethods は Application_BeginRequest または Application_Error を通過しません。ExceptionFilterAttribute から派生し、OnException オーバーライドを使用して属性を記述しようとしましたが、どちらも機能しませんでした。

では、誰がそれらの要求を処理するのでしょうか?

クライアント呼び出しは、以下の jQuery ajax リクエストを通じて行われます。

$.ajax({
    type: "POST",
    url: "SomePage.aspx/SomeMethod",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (response) {
        someVar = response.d;
    },
    error: function (a, b, c) {
        console.log(a); 
        // handle 
    } 
});
4

1 に答える 1

1

ドキュメントから、エラーをグローバルに処理するために SOAP 拡張機能を構築する必要があるように見えます - 以下の便利なスニペットとリンク:

Web アプリケーションは、複数の Web サービスで構成できます。ただし、Global.asax Syntax ファイル内の Application_Error イベントは、グローバルな例外処理には使用できません。Web サービスの HttpHandler は、Web サービスの実行中に発生するすべての例外を消費し、Application_Error イベントが呼び出される前に SOAP エラーに変換します。グローバル例外ハンドラーで Web サービス例外を処理する SOAP 拡張機能を作成します。SOAP 拡張機能は、ProcessMessage メソッドで例外の存在をチェックできます。ProcessMessage メソッド内で、Stage プロパティが AfterSerialize に設定されている場合に渡される SoapMessage の Exception プロパティを確認します。SOAP 拡張機能の詳細については、SOAP 拡張機能を使用した SOAP メッセージの変更を参照してください。

XML Web サービスでの例外の処理とスローからの抜粋(途中で役立つ例もあると思います)

さらに、Rick Strahl (MVP) は、このトピックについて少し前にこれを書きました。これは、その場で問題を修正しますが、問題をグローバルに管理する必要性には対応していませんhttp://www.west-wind.com/weblog/posts/2005/ Jan/29/NET-Web サービスと未処理の例外

この投稿では、要件に従ってグローバル エラー処理用の SOAP 拡張機能を構築する方法について説明しますhttp://geekswithblogs.net/pavelka/archive/2005/09/05/HowToCreateAGlobalExceptionHandlerForAWebService.aspx

于 2012-08-26T13:00:58.837 に答える