检查是否可以访问URL - 帮助优化类

Gib*_*boK 15 c# asp.net uri

net 4和c#.

如果Uri(字符串)返回HTTP状态代码200,我需要一个能够返回Bool值的Class .

目前我有这个代码(它使用try来查看是否可以连接到Uri),但我想用"HttpStatusCode.OK"实现.

  • 你知道更好的方法吗?

谢谢.

public static bool IsReachableUri(string uriInput)
        {
            // Variable to Return
            bool testStatus;
            // Create a request for the URL.
            WebRequest request = WebRequest.Create(uriInput);
            request.Timeout = 15000; // 15 Sec

            WebResponse response;
            try
            {
                response = request.GetResponse();
                testStatus = true; // Uri does exist                 
                response.Close();
            }
            catch (Exception)
            {
                testStatus = false; // Uri does not exist
            }
            // Result
            return testStatus;
        }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 31

好吧,首先,最好是using为你的回复而不是仅仅调用一个声明Close- 在这种情况下没有太大的区别,但总的using说法是要走的路.

至于测试结果状态 - 只需将响应转换为HttpWebResponse然后使用该StatusCode属性.像这样的东西:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Timeout = 15000;
request.Method = "HEAD"; // As per Lasse's comment
try
{
    using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
    {
        return response.StatusCode == HttpStatusCode.OK;
    }
}
catch (WebException)
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您测试Web服务URL和目标Web服务配置为不允许HEAD方法怎么办?您将收到响应:405 Method Not Allowed,因此您的方法将返回false,并不意味着无法访问URL.问题的方法是正确的. (2认同)