如何忽略来自webrequest的401未经授权的错误以获取网站状态

gua*_*ome 10 .net c# httpwebrequest

我正在编写一个应用程序来检查一些内部Web应用程序的状态.其中一些应用程序使用Windows身份验证.当我使用此代码检查状态时,它会抛出The remote server returned an error: (401) Unauthorized..这是可以理解的,因为我没有向网站提供任何凭据,所以我没有被授权.

WebResponse objResponse = null;
WebRequest objRequest = HttpWebRequest.Create(website);
objResponse = objRequest.GetResponse();
Run Code Online (Sandbox Code Playgroud)


有没有办法忽略401错误而不做这样的事情?

WebRequest objRequest = HttpWebRequest.Create(website);

try
{
    objResponse = objRequest.GetResponse();
}
catch (WebException ex)
{
    //Catch and ignore 401 Unauthorized errors because this means the site is up, the app just doesn't have authorization to use it.
    if (!ex.Message.Contains("The remote server returned an error: (401) Unauthorized."))
    {
        throw;
    }                    
}
Run Code Online (Sandbox Code Playgroud)

小智 18

我建议试试这个:

        try
        {
            objResponse = objRequest.GetResponse() as HttpWebResponse;
        }
        catch (WebException ex)
        {
            objResponse = ex.Response as HttpWebResponse;
        }
        finally
Run Code Online (Sandbox Code Playgroud)

WebException具有您想要的所有信息的响应.


Hen*_*man 3

当服务器关闭或无法访问时,您将收到超时异常。我知道处理这个问题的唯一方法是使用 try/catch。

我很确定大多数错误(401/404/501)都是这种情况,所以:不,您不能忽略(防止)异常,但您必须处理它们。它们是获取您的应用程序正在寻找的大部分 StatusCodes 的唯一方法。