0

这可能看起来有点微不足道,但我一直无法弄清楚。我正在打开一个 SPSite,然后尝试在该 SPSite 下打开一个 SPWeb。这在具有相同站点集合/站点层次结构的 VPC 上运行良好,但在生产中,当我尝试 SPSite.OpenWeb(webUrl); 时,我收到一个异常,告诉我 URL 无效。我已经验证了 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 实际上是包含 Web 的 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 branchScheduleURL, String testID)System.NullReferenceException: 对象引用未设置为对象的实例。在 MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.CheckForConflicts(字符串 [] cfcFlags1,日期时间开始时间,日期时间结束时间,字符串 [] cfcFlags2)

注意:
https : //ourSite.com/mocc/internal/scheduletool 是我要打开的 SPWeb。

我错过了一些明显的东西吗?任何帮助将不胜感激。

谢谢。

4

3 回答 3

3

查看本页底部的示例表。

尽量不要将任何参数发送到 OpenWeb() 方法(第 2 行)。

于 2008-10-10T18:45:00.460 回答
1

首先尝试获取“内部”的 SPWeb 对象。然后获取该对象的 SubWeb SPWebCollection。由此,尝试使用 GetSubwebsForCurrentUser() 方法获取“ScheduleTool”的 SPWeb 对象。

于 2008-10-11T11:53:01.227 回答
0

它说您的网站集 URL 是 /mocc,因此您下面的 SPWeb 将类似于 /mocc/internal/scheduletool。所以做类似的事情

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

于 2008-10-13T20:17:26.637 回答