多くの Ajax 呼び出しに jQuery を使用する asp.net MVC Web アプリケーションがあります。ajax は、ストアド プロシージャでスローされたさまざまな検証例外をキャッチするコントローラーを呼び出します。手順で検証例外が発見された場合、次の構文を使用します
RAISERROR ('VALIDATION ERROR: xyx is required.', 16, 1)
次に、MVC コントローラーが SQL 例外をキャッチし、そこでログを記録してから、新しい例外 (e.Message) を再スローします。
catch (SqlException se)
{
// logging happens
// exception get rethrown for ajax error handling
throw new Exception(se.Message);
}
そこから、私の ajax エラー ハンドラーが引き継ぎます。
error: function(jqXHR, textStatus, errorThrown) {}
私のローカル Visual Studio Server では、ajax エラー ハンドラーが目的の次の jqXHR.responseTextを取得します。
<html>
<head>
<title>VALIDATION ERROR: xyx is required.</title>
</head>
....
そこからタイトルを解析し、検証エラーを表示します。よく働く。
ただし、コードをホストされた IIS サーバーにデプロイすると、jqXHR.responseText で一般的な 500 応答が返されます。
<html>
<head>
<title>Runtime Error</title>
</head> ....
何らかの理由で、共有製品サーバーが例外を異なる方法で処理しています。両方の環境で最初の動作を生成する方法を知っていますか?
web.configに次の行を追加しようとしましたが、うまくいきません
<httpErrors errorMode="Custom" existingResponse="PassThrough">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="502" subStatusCode="-1" />
<remove statusCode="501" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
</httpErrors>
前もって感謝します