2011-08-23 102 views
2

主題幾乎說明了一切。我有一個EstateReport Web窗體,必須使用EstateId請求參數調用。我想返回一個合適的HTTP錯誤,這個參數我們不存在。我如何返回HTTP錯誤400作爲我的迴應?如何從Web表單請求返回HTTP 400 - 錯誤請求錯誤?

在一個切線,我應該返回一個錯誤,如果需要的參數不存在,這是我的感覺是比較正確的,或重定向到搜索頁的報告,這是對用戶更友好?

回答

1
從我瞭解的形式需要一個參數以有意義的方式來顯示結果

左右。 400是一個錯誤的請求,雖然我理解你的想法,規範指出:

「由於格式錯誤,服務器無法理解請求,客戶端不應該不加修改地重複請求。

從最純粹的意義上講,如果有人要求說「EstateReport.aspx」沒有參數,服務器仍然可以解釋並回復一個適當的響應,所以它不是最廣泛意義上的「不良請求」。

我會建議你檢測缺少參數,並通過鏈接呈現相應的錯誤消息,通過某種方式選擇合適的「estateId」,因此當需要EstateReport時,參數爲當下。

+0

感謝輸入@ KD7,但我也在考慮該報告的網址,這樣的錯誤信息應該是機器可讀和狀態代碼是機器可讀的。 – ProfK

+0

啊,我明白了......我只是認爲人類會通過瀏覽器請求頁面。 – kd7

+0

到目前爲止,這將是隻有人類,但我經常會犯思維超前太多。 :-)很可能是服務請求報告,然後將它的PDF版本發佈給訂閱者。我不希望他們全部通過電子郵件發送PDF格式的錯誤消息。 – ProfK

20

,您可以:

throw New HttpException(400, "Bad Request"); 

Response.StatusCode = 400; 
Response.End(); 

,但我有同樣的想法如下KD7 - 爲什麼不顯示,讓他們知道什麼是錯的錯誤信息到客戶端?被機器要求

+0

最好避免Response.End()。 http://stackoverflow.com/a/11505401/991267 –