MOSS 2007 - исключение недопустимого URL-адреса SPSite.OpenWeb (...) - PullRequest
0 голосов
/ 10 октября 2008

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

Код:

  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: / internal / scheduletool. в Microsoft.SharePoint.SPSite.OpenWeb (String strUrl, Boolean requireExactUrl) в Microsoft.SharePoint.SPSite.OpenWeb (String strUrl) в MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.GetConflictListItem, ссылка на объект String, ссылка на объект String, ссылка на системный объект, ссылка на объект String (ссылка на класс String) экземпляр объекта. в MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.CheckForConflicts (String [] cfcFlags1, DateTime startTime, DateTime endTime, String [] cfcFlags2)

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

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

Спасибо.

Ответы [ 3 ]

3 голосов
/ 10 октября 2008

Посмотрите на таблицу примеров внизу этой страницы .

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

1 голос
/ 11 октября 2008

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

0 голосов
/ 14 октября 2008

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

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

...