2011-10-14 26 views
1

我們在生產環境中部署了一個REST服務,它返回一個簡單對象的XML序列化表示。在REST序列化期間拋出的內部異常會導致HTTP 401?

當調用REST'get'方法時,我們看到一個非常奇怪的問題,即在我們所有的用戶代碼完成後(根據我們自己的日誌),我們在瀏覽器中獲得了一個用於呈現對象XML的401。在REST方法中執行'return'語句期間,服務器端失敗。

我們認爲我們理解這個問題的一部分...該對象包含一個枚舉,其值實際上是從數據庫返回的。在這種特殊情況下,我們設法給枚舉中未定義的枚舉賦予一個整數值(此行爲是允許的,並且是Enum.IsDefined方法的原因:http://msdn.microsoft.com/en-us/library/system.enum.isdefined.aspx

我們的假設是當REST框架代碼處理'return'語句時,它會嘗試將Enum序列化爲文本值,並因爲指定值不存在名稱(字符串)而爆發。

奇怪的是,雖然,而不是讓死亡或相似的黃色畫面,我們得到一個401(以及在瀏覽器中輸入憑據的提示)。

我們想知道,如果ASP.NET/IIS確實在這些情況下,某種Server.Transfer的,但也許它沒有文件系統權限,它被轉移到網頁 - ?我們對在發動機蓋下發生了什麼感到困惑!沒有客戶端重定向。

任何想法的人?

回答

0

401的HTTP狀態代碼裝置未經授權。從wikipedia

401未授權
類似403禁止,但專爲使用在認證是可能的但發生故障或尚未提供[2]。響應必須包含一個WWW-Authenticate標頭字段,其中包含適用於所請求資源的挑戰。請參閱基本訪問驗證和摘要訪問驗證。

我開始看你的驗證是如何設置的。

+0

感謝您的答覆。我熟悉401的意思,我只是不確定爲什麼它會因FCL代碼中出現的序列化錯誤而返回。如果XML序列化工作正常(例如,我們解析有效的枚舉值),則不會出現此問題。 –

+0

哦,我明白了。這是一個奇怪的錯誤。你使用直接的ASP.NET或MVC? – smoak

+0

確實! ...我們使用的是香草ASP.NET –

相關問題