0

我正在尝试SPWeb.GetListItem()通过已知 URL ( MSDN ) 获取项目。

所以基本上我正在做以下事情:

using (SPSite spSite = SPContext.Current.Site)
{
    using (SPWeb spWeb = spSite.RootWeb)
    {
        SPListItem spListItem = spWeb.GetListItem
            ("/sites/testSite/Lists/testList/Folder/Subfolder");
    }
}

如果您想知道,我正在尝试获取文件夹“子文件夹”来处理它。

问题是我第一次调用这个时,我得到了一个 COMExpeption:

无法完成此操作。

请再试一次。<nativehr>0x80004005</nativehr><nativestack></nativestack>

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息: System.Runtime.InteropServices.COMException:无法完成此操作。

一些关于 COMException 发生的 报告,因为您需要使用完整的相对站点 URL,所以/Lists/testList/Folder/SubFolder您需要使用而不是 ,/sites/testSite/Lists/...我正在这样做。我还尝试使用绝对 URL ( http://sharepoint/sites/...)。问题仍然存在:第一次尝试获取 spListItem 时出现 COMException。
当我尝试在异常之后再次运行代码时,SPListItem 接收得很好。此外,所有后续调用都有效 - 只有第一个调用失败。

我是在做一些初始化错误或类似的事情吗?

4

2 回答 2

1

尝试实例化列表项所在的 Web - _uiserWeb.

我试过Site.RootWeb.GetListItem(item_url)了 - 它null在代码重新部署后第一次给了我,第二次很好。

_item = _userWeb.GetListItem(item_url)
于 2014-11-04T15:32:35.467 回答
1

也许改用 SPWeb.GetFolder() ......但这又取决于你想对文件夹做什么。尽管您使用的是用于获取文件夹上的列表项的方法,但这似乎很奇怪。

http://msdn.microsoft.com/en-us/library/ms461547.aspx

于 2011-03-17T23:49:29.777 回答