0

我需要捕捉“远程服务器返回错误:(401)未经授权。” 异常做另一个动作。
问题是,我不确定如何识别它。
现在,我正在使用

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"))  

但这真的很糟糕

4

2 回答 2

0

版本 1.7 上的 google-api-dotnet-client 代码存在问题。如果您正在使用此版本,我鼓励您更新到最新版本。

如果您查看此链接:Google.Apis.Email_Migration_v2 ,您将看到有一张关于此错误的票。

这是一个教程和代码示例,显示了在更正 API 时应如何处理此错误: https ://developers.google.com/drive/web/handle-errors

如果您仍然遇到相同的问题,我还建议您使用相同的解决方案来检查字符串中的 401 错误。

于 2014-05-08T05:20:31.317 回答
0

该类GoogleApiRequestException有一个属性Codenot HttpStatusCode。所以你可以Code像下面这样检查。

if(e.Code.Equals("401"))  

我参考了这里。
https://developers.google.com/drive/web/handle-errors#catching_exceptions_with_client_libraries

于 2014-05-08T07:11:05.210 回答