2011-12-08 8 views
2

データベース要求を処理するC#AJAXサーバーがあります。例外で400/403/500のステータスコードを返すため、クライアント側。しかし、私たちが返すのは、レスポンスボディでは "Bad Request"です。例えばC#/ ASP.Netを使用してresponseTextにエラーを戻す方法

、ADO.Netドライバがこのメッセージを返す場合:左またはSUBSTRING関数に渡さ

無効な長さのパラメータ。 カラム '--COLUMN--'に値NULLを挿入できません。テーブル ' - DATABASE.SCHEMA.TABLE--';列はNULLを許可しません。 INSERT が失敗します。ステートメントは終了されました。

そして、私たちのAJAX Serverは、単純にこのテキストを返します。

不正な要求

私はChromeで完全なレスポンスヘッダを見ているとでも遠隔操作でこのエラーメッセージに似たものはありませんそこ。いくつかあります

} catch (Exception e) { 

    response.sendError(response.SC_BAD_REQUEST, e.getClass() + " : " + e.getMessage()); 

}  

答えて

1

:私たちはこのコードの正しい動作を取得している、このサーバーへのJava/JSPと同等で

catch (Exception ex) 
{ 
    //Response.TrySkipIisCustomErrors = true; 
    Response.StatusCode = (int)HttpStatusCode.SC_BAD_REQUEST; 
    Response.Write(ex.Message); 
    Response.Flush(); 
} 

:これは私たちが戻ってエラーを送信するために使用しているコードです。間違っているかもしれないものが、私はあなたがIIS7で動作していることを賭ける準備ができていて、そのデフォルトがエラーを書き直す原因になっています。 TrySkipIisCustomErrorsプロパティと、httpErrors構成設定のexistingResponse属性を試してください。

+1

これをweb.configに追加すると、トリックが実行されました。多くの感謝! ASP.NETの外の何かが上げた場合に選択される影響 ' ' – Graham

0

サーバーは、セキュアな詳細がクライアントに届かないように、エラーメッセージを不正な要求にカプセル化しています。この動作を変更するには、customErrorsをoffに設定します。

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

エラーは明示的に設定されたものではなく、そうではありませんか? –

+0

web.configでこれを変更しただけで効果がありませんでした。 – Graham

関連する問題