2017-01-30 65 views
2

我想在客戶端讀取異常的子狀態代碼,如500.1。如何實現這一目標?如何用java腳本獲取異常的子代碼?像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'永遠不會包含在實際的響應(主要用於失敗的請求追蹤和自定義錯誤頁面)。如果你是instist的話,你可以實現一個全局過濾器,它會明確地將它附加到響應中。請參閱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」 個分離。

如果莫名其妙子狀態無法通過,也許你可以使用另一個HTTP標頭字段爲你的目標,哪怕是不按標準......

+0

讀取標頭並不足夠,因爲默認情況下子狀態碼不是響應的一部分。除非你明確地將它添加到響應中,否則它根本就不會在那裏供你閱讀。 – haim770

相關問題