2008-10-10 7 views
0

Это может показаться немного тривиальным, но я не смог понять это. Я открываю SPSite, а затем пытаюсь открыть SPWeb под этим SPSite. Это отлично работает на VPC, который имеет ту же иерархию сайта/сайта, но при производстве я получаю исключение, говорящее, что URL-адрес недействителен, когда я пытаюсь использовать SPSite.OpenWeb (webUrl) ;. Я проверил, что URL-адреса верны.MOSS 2007 - Недопустимый URL-адрес Исключение SPSite.OpenWeb (...)

Кодекс:

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

Примечание:
branchScheduleURL фактически весь URL, который включает в себя URL-адрес в Интернете, а также.

Выход + исключение:

URL Коллекция сайта: https://ourSite.com/mocc
System.ArgumentException: Недопустимый URL:/внутренний/scheduletool. в Microsoft.SharePoint.SPSite.OpenWeb (String strUrl, Boolean requireExactUrl) в Microsoft.SharePoint.SPSite.OpenWeb (String strUrl) в MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.GetConflictListItem (String branchScheduleURL, String testID) System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта. в MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.CheckForConflicts (String [] cfcFlags1, DateTime STARTTIME, DateTime EndTime, String [] cfcFlags2)

Примечание:
https://ourSite.com/mocc/internal/scheduletool это SPWeb я пытаюсь открыть.

Я пропустил что-то очевидное? Любая помощь будет принята с благодарностью.

Спасибо.

ответ

3

Обращает внимание на таблицу примеров в нижней части this page.

Не пытайтесь отправить какие-либо параметры в метод OpenWeb() (вторая строка).

+0

Спасибо! Я не понимал, что конструктор для SPSite запомнил исходный URL-адрес, который был передан. Я думал, что он просто лишил URL-адрес до семейства сайтов и проигнорировал остальные. – AdamBT 2008-10-14 14:46:02

1

Попробуйте сначала получить объект SPWeb для «внутреннего». затем получите SubWeb SPWebCollection для этого и объекта. Из этого попытайтесь получить объект SPWeb для «ScheduleTool» с помощью метода GetSubwebsForCurrentUser().

0

В нем говорится, что ваш URL-адрес сайта/mocc, поэтому ваш SPWeb под ним будет что-то вроде/mocc/internal/scheduletool. Так что сделайте что-нибудь вроде

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

 Смежные вопросы

  • Нет связанных вопросов^_^