2008-10-10 6 views
0

Cela peut sembler un peu trivial, mais je n'ai pas réussi à le comprendre. J'ouvre un SPSite et essaye ensuite d'ouvrir un SPWeb sous ce SPSite. Cela fonctionne très bien sur le VPC, qui a la même hiérarchie Site Collection/Site, mais en production, je reçois une exception me disant que l'URL est invalide lorsque j'essaye le SPSite.OpenWeb (webUrl) ;. J'ai vérifié que les URL sont correctes.MOSS 2007 - Exception d'URL invalide SPSite.OpenWeb (...)

Le code:

try 
     { 
      SPSite scheduleSiteCol = new SPSite(branchScheduleURL); 
      lblError.Text += Environment.NewLine + "Site Collection URL: " + scheduleSiteCol.Url; 
      SPWeb scheduleWeb = scheduleSiteCol.OpenWeb(branchScheduleURL.Replace(scheduleSiteCol.Url, "")); //<--- Throws error on this line 
      SPList scheduleList = scheduleWeb.GetList(branchScheduleURL + "/lists/" + SPContext.Current.List.Title); 
      return scheduleList.GetItemById(int.Parse(testID)); 
     } 
     catch (System.Exception ex) 
     { 
      lblError.Text += Environment.NewLine + ex.ToString(); 
      return null; 
     } 

Note:
branchScheduleURL est en réalité l'URL complète qui inclut l'URL du Web ainsi.

La sortie + exception:

URL Collection du site: https://ourSite.com/mocc
System.ArgumentException: URL non valide:/interne/scheduletool. à Microsoft.SharePoint.SPSite.OpenWeb (Chaîne strUrl, Boolean requireExactUrl) à Microsoft.SharePoint.SPSite.OpenWeb (Chaîne strUrl) à MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.GetConflictListItem (String branchScheduleURL, chaîne testID) System.NullReferenceException: Référence d'objet non définie à un instance d'un objet. à MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.CheckForConflicts (String [] cfcFlags1, DateTime STARTTIME, DateTime endTime, String [] cfcFlags2)

Note:
https://ourSite.com/mocc/internal/scheduletool est le SPWeb que je suis en train d'ouvrir.

Est-ce que quelque chose me manque? Toute aide serait grandement appréciée.

Merci.

Répondre

3

Regarde le tableau des exemples au bas de this page. Essayez de ne pas envoyer de paramètres dans la méthode OpenWeb() (2ème ligne).

+0

Merci! Je ne me suis pas rendu compte que le constructeur de SPSite se souvenait de l'URL d'origine transmise. Je pensais que cela réduisait l'url à la collection de sites et ne tenait pas compte du reste. – AdamBT

1

Essayez d'obtenir l'objet SPWeb pour "Internal" en premier. puis obtenez le SPWebCollection SubWeb pour cela et objet. À partir de là, essayez d'obtenir l'objet SPWeb pour "ScheduleTool" en utilisant la méthode GetSubwebsForCurrentUser().

0

Il est dit que votre URL de collection de sites est/mocc, donc votre SPWeb sous-jacent serait quelque chose comme/mocc/internal/scheduletool. Donc, faites quelque chose comme

string webServerRelativeUrl = site.ServerRelativeUrl + "/internal/scheduletool"

Questions connexes