1

概要

[WebMethod] の例外シリアル化の動作は、「同じサーバー上のすべて」での使用と「実際の使用」で異なります。

状況

次のように、 foo.aspxに Web サービスを実装しています。

[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)]
public static Fruit InsertUpdateFruitWebService()
{
    return FruitHelper.InsertUpdateFruit();

}

webservice は、jQuery - $.ajax を使用してbar.aspx内から呼び出されます。

InsertUpdateFruitで何らかの問題が発生した場合、例外がスローされ、$.ajax 内で指定された「エラー」コールバックが呼び出され、JSON blob が引数として「エラー」コールバック関数に渡されます。

良いニュース

ブラウザとサーバーが同じマシン上にある場合、これはすべて正常に機能します。

あまり良くないニュース

ブラウザとサーバーが同じマシンではない場合、「エラー」コールバックに引数として渡される JSON blob で得られるのは次のとおりです。

{"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

スタックトレース、例外の詳細などはありません。

質問

誰かがこれを引き起こす可能性のある方向に私を向けることができますか?

4

1 に答える 1

4

これに対する答えとしては、Web.config ファイル (または使用したい .config ファイル) を修正して、customErrors 属性が「オフ」に設定されるようにすることです ...

<system.web>
    ... other stuff
    <customErrors mode="Off" />
</system.web>

これが優れた解決策ではない状況はたくさんありますが、このプロジェクトではうまくいきます。

クレジットは Dave Ward とhttp://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/での彼のブログ投稿 (実際にはコメントにあります)に行く必要があります。これ 。

于 2012-06-07T01:30:14.133 に答える