【问题标题】:C# How can I get server error from a URL?C# 如何从 URL 获取服务器错误?
【发布时间】:2011-04-21 05:50:19
【问题描述】:

我们有一个 url,我们需要检查网页是否处于活动状态。我们尝试了以下代码: WebResponse objResponse = null;

        WebRequest objRequest = HttpWebRequest.Create(URL);
        objRequest.Method = "HEAD";
        try
        {
            objResponse = objRequest.GetResponse();
            objResponse.Close();                
        }
        catch (Exception ex)
        {

        }

如果无法获得响应,上面的代码会给出异常,但即使我们在该页面上出现“服务器错误”也能正常工作?任何帮助如何获取服务器错误?

【问题讨论】:

    标签: c# url webpage server-error


    【解决方案1】:

    HttpResponse 类有一个 StatusCode 属性,您可以检查它。如果是 200 则一切正常。

    您可以将代码更改为:

            HttpWebResponse objResponse = null;
            var objRequest = HttpWebRequest.Create("http://google.com"); 
            objResponse = (HttpWebResponse) objRequest.GetResponse();
            if(objResponse.StatusCode != HttpStatusCode.OK)
            {
                Console.WriteLine("It failed");
            }else{
                Console.WriteLine("It worked");
            }
    

    【讨论】:

    • 有什么资源可以让我知道如何转换或更改我的代码?
    • 感谢您的及时回复,但我面临 url 返回“statuscode = OK”的问题,但是当我尝试访问该 url 时,它给了我黄屏死机和“服务器错误” /' 应用。”信息。我需要检查页面是否已启动,如果已启动,则检查它是否“工作正常”或“出现黄屏死机”。我们需要检查 else{ Console.WriteLine("It working"); }.
    • @Malik,您可能希望关闭自定义错误,以便 IIS 返回实际的 http 错误代码,而不是包含错误的格式良好的 html 文档。
    【解决方案2】:

    一方面,在响应中使用using 声明 - 这样无论发生什么你都会处理它。

    现在,如果WebException 被抛出,您可以抓住它并查看WebException.Response 以找出状态代码和发回的任何数据:

    WebRequest request = WebRequest.Create(URL);
    request.Method = "HEAD";
    try
    {
        using (WebResponse response = request.GetResponse())
        {
            // Use data for success case
        }
    }
    catch (WebException ex)
    {
        HttpWebResponse errorResponse = (HttpWebResponse) ex.Response;
        HttpStatusCode status = errorResponse.StatusCode;
        // etc
    }
    

    【讨论】:

    • 它在正常情况下工作正常,例如页面打开或关闭,但我们想验证页面是否打开,然后检查它是否有任何服务器错误并且它没有显示黄屏死机.
    • @Malik:你可能需要检查它是否显示带有“成功”HTTP 状态代码的优雅错误页面 - 但如果 HTTP 状态代码是错误的,它将进入捕获块。基本上如果黄屏死机仍然是成功页面,你应该检查内容。
    • 谢谢乔恩。我查看了“myResponse.Headers.AllKeys”,它们对于“黄屏死机页面”和“工作页面”都是相同的。有什么帮助我可以检查内容吗?
    • @Malik:您可能需要更改错误页面,或下载一些实际内容(即 GET 而不是 HEAD)以查看差异。
    • @Jon:GET 返回页面的来源。我应该在源代码中查找特定的单词?
    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多