.NET WebAPI 正確拋出錯誤詳細信息


最近把之前的WebAPI項目發布到服務器上,數據庫由SQL Server2008 EXPRESS改為SQL Server2000,但在分頁查詢時服務器拋出了“500錯誤”,但卻看不到錯誤的詳細信息,按照之前的經驗把配置文件的customErrors打開依然看不到詳細信息,由於項目是發布在服務器上,沒有辦法進行調試,且服務器是windows20003,頁沒有辦法進行遠程調試,寫try…catch…捕捉action中的錯誤並拋出依然獲取不到詳細信息,得不到錯誤詳細信息就沒有方向對錯誤進行修改,然后就在網上搜索解決辦法,發現WebAPI出現錯誤,只會拋出500,並不包含詳細信息,只有拋出HttpResponseException,才能得到錯誤的詳細信息,這樣就好辦了,代碼如下:

try
{
    ...
}
catch (Exception e) {
    //在webapi中要想拋出異常必須這樣拋出,否則之拋出一個默認500的異常
    var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
    {
        Content = new StringContent(e.ToString()),
        ReasonPhrase = "error"
    };
    throw new HttpResponseException(resp); 
}

最后根據錯誤詳細信息發現是新版NHibernate不支持SQL Server2000的分頁查詢了,又裝了一個SQL Server2005錯誤解決。

就在寫這篇記錄的時候剛想到其實用不着這么麻煩,可以直接把Exception的詳細內容輸出的,又走彎路了…


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM