okプロダクション環境に問題があり、jquery ajaxがエラーをキャプチャする方法があります。jquery ajaxによってc#例外が正しく取得されない
jquery ajaxがwebservice [webmethod]を呼び出し、webmethodが特定のエラーをスローすると、ローカルマシンの開発環境でjquery ajaxが正しくキャプチャしますが、jquery ajaxはエラーをキャプチャしますジェネリック "要求を処理中にエラーが発生しました。"私のローカルマシン上の "内部サーバーエラー" は、例えば
C#コード
[WebMethod]
public String dostuff(String Auth){
// some code here
// if error occurs
throw new Exception("Some specific error message");
return "ok";
}
jqueryのAJAX呼び出し
var data = JSON.stringify({ Auth: "some data here" }, null);
$.ajax({
type: "POST",
url: '/Services/memberService.asmx/dostuff',
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result.d); // alert ok
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("responseText=" + XMLHttpRequest.responseText + "\n textStatus=" + textStatus + "\n errorThrown=" + errorThrown);
}
});
でXMLHttpRequest.responseTextは "です特定のエラーメッセージ "
生産環境の場合XMLHttpRequest.responseTextが"要求の処理中にエラーが発生しました。"
ローカル環境は、R2(開発環境と同じ)IIS 7.5.7600.16385
なぜ差が、どのようにしてIIS 7.5.7600.16385
生産環境がWindows Server 2008とWindows 7のホームプレミアムですプロダクション環境が特定のエラーをスローするようにするには? *
*** *** ** *ちょうどフォローアップ.. TNXジャスティン*** * ** * ** ** *
私はweb.configファイルをseのみローカルサーバーに固有の例外情報を表示するにはrvicesフォルダ(DOH ...私はこのことについて考えていなかった理由を不思議に思う)デフォルトでは
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="Off" />
</system.web>
</configuration>
チェック:あなたはサービスフォルダのエラーを表示したい場合は
そして:
へweb.configの ''セクションを参照してください。通常は、例外の詳細をエンドユーザーに公開することは望ましくありません。 –
そうですが、これをWebサービスだけで有効にする方法はありますか?現在のところRemoteOnlyです – robert
これは私が長らく前に投稿したのとまったく同じ質問です。http://stackoverflow.com/questions/8059780/best-practices-throwing-exceptions-from-a-web-service – Icarus