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 を使用しているため、アクセス許可が拒否された (404) エラーが原因で、イントラネット上の認証済み SharePoint URL が検証に失敗しています。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 ();

補足: 「すべての例外を食べないでください」 - HttpWebRequest.GetResponse に関する記事で見つけることができる WebRequests を作成する場合に興味深い例外の非常に小さなセットがあります( WebException のみを処理する必要があります)。

于 2012-09-28T16:04:08.800 に答える