1

我正在验证常规 URL,如下所示:

private static bool IsUrlAvailable(string url)
    {

        if ((string.IsNullOrEmpty(url.Trim()) == true) ||
            (url.Trim().ToLower().Equals("http://")) ||
            (url.Trim().ToLower().Equals("https://")))
        {
            return false;
        }
        if (!url.ToLower().StartsWith("http://") && !url.ToLower().StartsWith("https://"))
        {
            url = "http://" + url;
        }
        try
        {
            var req = (HttpWebRequest)WebRequest.Create(url);
            req.Timeout = 15000;
            req.Method = "HEAD";
            using (var rsp = (HttpWebResponse)req.GetResponse())
            {
                if (rsp.StatusCode == HttpStatusCode.OK)
                {
                    return true;
                }
            }
        }
        catch (Exception ex)
        {
            // Eat it because all we want to do is return false 
        }

        // Otherwise 
        return false;
    }

但由于我使用的是 WebRequest.Create,因此 Intranet 上经过身份验证的 SharePoint url 验证失败,因为权限被拒绝 (404) 错误。现在我知道我们可以使用SPSite.Existsor来验证它,OpenWeb但这些仅在 microsoft.sharepoint.dll 中可用,我想知道是否有一种方法可以在不使用此 DLL 的情况下执行此操作?

4

1 回答 1

1

404 不是权限被拒绝...而是找不到文件。所以你可能确实点击了不存在的 URL。

您需要在请求中传递凭据

WebRequest request = WebRequest.Create ("http://www.contoso.com/default.html");
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();

旁注:请不要“吃掉所有异常” - 在进行 WebRequest 的情况下,有一小部分异常很有趣,您可以在有关HttpWebRequest.GetResponse的文章中找到这些异常(您应该只处理 WebException)。

于 2012-09-28T16:04:08.800 回答