2012-09-28 3 views
1

Je validais une URL régulière comme suit:validate lien sharepoint en C# sans utiliser dll Microsoft.SharePoint

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; 
    } 

Mais depuis que je me sers d'un WebRequest.Create, urls SharePoint authentifiées sur l'intranet ne parviennent pas validation, car d'autorisation refusée (404) erreur. Maintenant, je sais que nous pouvons le valider en utilisant SPSite.Exists ou OpenWeb mais ceux-ci ne sont disponibles que dans microsoft.sharepoint.dll et je me demandais s'il y a une façon de le faire sans utiliser cette DLL?

+1

Utilisez votre code: 'req.UseDefaultCredentials = true;'? – aquinas

Répondre

1

404 n'est pas l'autorisation refusée ... mais le fichier est introuvable. Donc, vous pouvez en effet frapper Url inexistant.

Vous devez passer credentials with your request

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(); 

Side note: s'il vous plaît ne pas « manger toutes les exceptions » - il est très petit nombre d'exceptions qui sont intéressantes en cas de faire WebRequests que vous pouvez trouver dans l'article sur les HttpWebRequest.GetResponse (vous devriez seulement gérer WebException).

+0

Désolé. A donné le mauvais code d'erreur. Mais ce que tu as dit a réglé mon problème. Merci beaucoup!! – CodeRunner

+0

'Note de côté: s'il vous plaît ne pas" manger toutes les exceptions "' [Pokémon Exception Handling] (http://www.codinghorror.com/blog/2012/07/new-programming-jargon.html) :) – OnesimusUnbound