2017-01-30 13 views
2

クライアント側で500.1のような例外のsubstatusコードを読んでみたいと思います。これを達成する方法は?ここJavaスクリプトで例外のsubstatusコードを取得するにはどうすればよいですか? like 500.1

は、サーバー側で私のコードです:

if(string.IsNullOrEmpty(userEmail)) {      
    Response.StatusCode = 500; 
    Response.SubStatusCode = 1; 
    Response.StatusDescription = "Email fehlt"; 

    return;      
} 

クライアント側:クライアント側で

if (xhr.status == 500 && thrownError.indexOf("Email") > -1) { 
    alert('Email is missing...'); 
} 
else { 
    alert('Error...'); 
} 
+1

は 'SubStatusCode'は、実際の応答に含まれることはありません...それは標準に準拠していない場合でも、あなたの目標のために別のHTTPヘッダフィールドを使用することができます主に失敗した要求のトレースやカスタマイズされたエラーページに使用されます)。あなたが嫌悪感を覚えているなら、それを明示的にレスポンスに添付するグローバルフィルタを実装することができます。 https://msdn.microsoft.com/en-us/library/system.web.httpresponse.substatuscode(v=vs.110).aspx – haim770

+0

リクエストのトレースが失敗しました - これが私が探しているものです。私はSubstatusを特定の失敗した要求とエラーステータス= 500の内部サーバーエラーと共に正確に返したいと思います。 –

+0

それは私が "失敗した要求トレース"の意味ではありません。私はIISモジュールを参照しました:https://www.iis.net/learn/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iisしかし、あなたが実際の応答には、私は解決策を提供する答えを書くことができます。 – haim770

答えて

1

あなたがXMLHttpRequestgetAllResponseHeaders()方法を使用することができます。

実際に正しいhttpヘッダーが送信された場合、それが読み取られます。

例:

var request = new XMLHttpRequest(); 
request.open("GET", "ajax.php", true); 
request.send(); 
request.onreadystatechange = function() { 
    if(this.readyState == this.HEADERS_RECEIVED) { 
     console.log(this.getAllResponseHeaders()); 
    } 
} 

出力が "\ rをする\ n" により分離されます。何とかサブ状態が通過できない場合

、多分あなたは(

+0

のようなものです。デフォルトでは、サブステータスコードはレスポンスの一部ではないので、ヘッダーを読むだけでは十分ではありません。どういうわけか明示的にレスポンスに追加しない限り、読んだだけではそこには存在しません。 – haim770

関連する問題