2012-02-22 8 views
9

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> 
+3

チェック:あなたはサービスフォルダのエラーを表示したい場合は

<customErrors mode="Off" /> 

そして:

<customErrors mode="RemoteOnly" /> 

へweb.configの ''セクションを参照してください。通常は、例外の詳細をエンドユーザーに公開することは望ましくありません。 –

+0

そうですが、これをWebサービスだけで有効にする方法はありますか?現在のところRemoteOnlyです – robert

+0

これは私が長らく前に投稿したのとまったく同じ質問です。http://stackoverflow.com/questions/8059780/best-practices-throwing-exceptions-from-a-web-service – Icarus

答えて

14

は、.NETアプリケーションが設定されています。

これは、攻撃者が攻撃に基づいて特定の例外情報を取得できないようにするためです。通常、その動作を変更することは悪い考えです。

あなたは、しかし、あなたが変更することができなければならない場合:

<location Path="/Services"> 
    <system.web> 
     <customErrors mode="Off" /> 
    </system.web> 
</location> 
+0

これをウェブサービスのためにのみ利用できるようにする方法はありませんか?彼らはすべて "サービス"と呼ばれるフォルダにあります – robert

+0

@robert - 私の答えを更新しました。ブロック全体を要素に追加するだけです。 –

+0

awsome ty ..私は試してみてください...あなたは>タグがありません: – robert

関連する問題