2013-09-01 49 views
0

我需要趕上「遠程服務器返回錯誤:(401)未經授權。」執行其他操作的例外情況。
問題是,我不知道如何識別它。
現在,我使用如何在C中捕獲特定的異常#

catch (Exception ex) 
{ 

} 

但例外「遠程服務器返回錯誤:(401)未經授權」出現在「InnerException」和「消息」裏面,所以沒有狀態碼或任何東西。

我該如何追蹤這個特定的異常?

如果GoogleDrive SDK相關,我正在使用它。

嘗試使用此:

catch (GoogleApiRequestException e) { 
     if (e.HttpStatusCode == HttpStatusCode.Unauthorized) { 
     // Credentials have been revoked. 
     // TODO: Redirect the user to the authorization URL. 
     throw new NotImplementedException(); 
     } 
    } 

但e.HttpStatusCode爲0,所以它不承認它。

我想我可以使用

if(ex.Message.Contains("401")) 

但它是非常糟糕的

+1

爲什麼檢查消息字符串真的很糟糕,您可以添加「遠程服務器返回錯誤」。請記住,並不總是一種好的,完美的或標準的方式去做某件事。順便說一句,你現在可以使用它,併爲未來尋求更好的解決方案。 – ehsan88

+0

什麼是InnerException類型?如果它是特定類型的,那麼你可以在catch塊中使用它。 – bobbyalex

回答

0

已經有與1.7版本的谷歌的API-dotnet的客戶端代碼的問題。如果你使用這個版本,我鼓勵你更新到最新版本。

如果你看看這個鏈接:Google.Apis.Email_Migration_v2 你會看到有這個bug的票。

這裏是一個教程和代碼示例,演示如何這個錯誤應採取照顧,當API被糾正的: https://developers.google.com/drive/web/handle-errors

如果你還碰到了同樣的問題,我也建議同樣的解決方案給你問題來檢查字符串中的401錯誤。