【问题标题】:Catch Unauthorized exception捕获未经授权的异常
【发布时间】:2026-01-01 19:45:01
【问题描述】:

我正在通过输入用户凭据(用户名和密码)连接到我的项目中的 Web 服务,当用户输入无效的用户名/密码时,我需要捕获未经授权的异常。我该怎么做呢

【问题讨论】:

    标签: c#


    【解决方案1】:

    您是否尝试在调用 Web 服务之前捕获异常?

    try
    {
        result = Service.GetResult(param1, param2);
    }
    catch(System.Net.WebException ex)
    {
        Logger.WriteError("Error calling Webservice: ", ex.ToString());
    }
    

    WebException 将捕获服务器返回代码作为我认为的错误,例如 HTTP 状态 404:未找到等。

    【讨论】:

    • 我需要在调用方法中捕获异常。如果我通过检查消息文本来使用以下方法并且如果它是“请求失败,HTTP 状态 401:未授权”,是否可以。我会有我的自定义消息
    • 你可以这样做。然后您可以重新抛出一个自定义异常并将原始异常包装到其中 - 也许像 UnauthorizedWebException 之类的?
    • 你也控制Webservice吗?即您可以对其进行更改并重新发布吗?
    【解决方案2】:

    您的网络服务是 SOAP 吗?您是否在服务端使用 WCF?如果是这样,请查看Specifying and Handling Faults

    【讨论】:

    • 好吧,我无法帮助您处理 asmx。祝你好运!