0

JSON形式のjQuery / ajaxによって呼び出されるASP.NET WebMethodsを使用しています。

ユーザーにより多くの情報を提供して、例外処理を改善する必要があります。

元の例外をキャッチし、「見出し」と「説明」のみが設定されている「UserFriendlyException」をスローします。

非常に基本的な JSON 文字列 {"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""} しか得られません。

私はいくつかの解決策を探していて、次のようなページを見つけました: http://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/またはhttps://stackoverflow.com/a/ 891442/1099519

メッセージにアクセスできる場所は問題ありませんが、それでも複数のプロパティにアクセスしたかったのです。私が見た記事のほとんどは、通常、「ID」に statusCode を使用することを推奨しています。

私は別のアプローチを考えました:おそらく何らかの方法で例外のレンダリングをオーバーライドする方法があります(WCFで完全なメッセージを変更できるように)ので、この場合、何らかの方法で UserException をキャッチし、JSON文字列をレンダリングできます自分で?

何か案は?

助けてくれてありがとう、ドミニク

4

2 に答える 2

0

私は実際には非常に異なる方法でそれを解決しました。例外にこれ以上情報を追加できなかったため、別の解決策を見つける必要がありました。

「JsonContainer」オブジェクトを簡単に渡すことができる JsonException を作成し、ToString() を呼び出すときに、JsonContainer のプロパティを Json String にエスケープします。

したがって、最終的に、例外のメッセージは、必要なすべての情報を含む Json-String であり、次のように JQuery で解析できました。

if (data.responseJSON && data.responseJSON.ExceptionType == "InhouseWKOIT.Framework.BusinessEntities.Web.JsonContainerException") {
  var messageObject = JSON.parse(data.responseJSON.Message);
  var someInformation = messageObject.MyProperty1;
  var someMoreInformation = messageObject.MoreInformation;
}

これはかなりうまく、素晴らしく、スムーズに機能します:-)

ブラウザは JSON.parse メソッドをサポートするだけで済みます (ネイティブまたはプラグインを使用)

于 2014-01-14T15:21:19.027 に答える
0

返す WebMethod オブジェクトのパラメーターとして、クラス オブジェクトのエラー例外を渡すだけです。

これは、Web メソッドを呼び出すために使用する jquery メソッドです。

   this.Execute = function (HandlerName, Method, JsonData, SuccessCallBack, ShowLoading, LoaderText, AsyncMode,       ErrorCallback)
    {
        return this.Post(serviceLocation.format(HandlerName, Method), JsonData, SuccessCallBack, ShowLoading, LoaderText, AsyncMode, ErrorCallback)
    };

サービスを処理するときにエラーが発生した場合は、結果として例外メッセージを渡すだけです。うまくいけば、これはあなたが探しているものです。したがって、基本的には Jquery Message を使用せずに、返されたオブジェクトを、スローされたコード ビハインド例外を含むオブジェクトとして送り返します。

于 2013-10-02T17:28:36.443 に答える