我需要抓住“远程服务器返回错误:(401)未经授权。”例外以执行其他操作。
问题是,我不确定如何识别它
现在,我正在使用
catch (Exception ex)
{
}
但异常“远程服务器返回错误:(401)未经授权。”出现在“InnerException”和“Message”中,所以没有状态代码或任何东西。
如何跟踪此特定异常?
如果相关,我正在使用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"))
但这真的很糟糕
答案 0 :(得分:0)
版本1.7上的google-api-dotnet-client代码存在问题。如果您使用的是此版本,我建议您更新到最新版本。
如果您查看此链接:Google.Apis.Email_Migration_v2 你会看到这个bug上有一张票。
以下是一个教程和代码示例,说明了在纠正API时如何处理此错误: https://developers.google.com/drive/web/handle-errors
如果您仍然遇到同样的问题,我也建议您使用相同的解决方案来检查字符串中的401错误。
答案 1 :(得分:0)
GoogleApiRequestException
类的属性Code
不是HttpStatusCode
。
因此,您可以查看Code
,如下所示。
if(e.Code.Equals("401"))
我在这里提到。
https://developers.google.com/drive/web/handle-errors#catching_exceptions_with_client_libraries