在不使用microsoft.sharepoint dll的情况下验证c#中的sharepoint链接

在不使用microsoft.sharepoint dll的情况下验证c#中的sharepoint链接,c#,sharepoint,C#,Sharepoint,我正在验证常规URL,如下所示: private static bool IsUrlAvailable(string url) { if ((string.IsNullOrEmpty(url.Trim()) == true) || (url.Trim().ToLower().Equals("http://")) || (url.Trim().ToLower().Equals("https://"))) {

我正在验证常规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,内部网上经过身份验证的SharePoint URL由于权限被拒绝(404)错误而无法通过验证。现在我知道我们可以使用SPSite.Exists或OpenWeb对其进行验证,但这些仅在microsoft.sharepoint.dll中可用,我想知道是否有一种方法可以不使用此dll进行验证?

404没有被拒绝权限。。。但找不到文件。因此,您可能确实找到了不存在的Url

你需要通过考试


旁注:请不要“吃掉所有的异常”-在关于WebRequests的文章中,您可以找到关于WebRequests的非常小的异常集(您可能只处理WebException)。

404没有被拒绝的权限。。。但找不到文件。因此,您可能确实找到了不存在的Url

你需要通过考试


旁注:请不要“吃掉所有异常”-在关于WebRequests的文章中可以找到,在提出WebRequests的情况下,有非常少的异常是有趣的(您可能只处理WebException)。

让您的代码使用:
req.UseDefaultCredentials=true?让您的代码使用:
req.UseDefaultCredentials=true?对不起。给出了错误的错误代码。但是你说的解决了我的问题。非常感谢<代码>旁注:请不要“吃掉所有例外”
:)对不起。给出了错误的错误代码。但是你说的解决了我的问题。非常感谢<代码>旁注:请不要“吃掉所有例外”
:)
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 ();