第一次调用时SPWeb.GetListItem COMException - 第二个没问题

时间:2011-03-17 13:52:07

标签: sharepoint-2010 listitem comexception spweb

我正在尝试使用SPWeb.GetListItem()按已知网址(MSDN)获取商品。

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

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

如果您想知道,我正在尝试使用“Subfolder”文件夹来处理它。

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

  

无法完成此操作。

     

请尝试   试。<nativehr>0x80004005</nativehr><nativestack></nativestack>

     

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

     

例外详情:   System.Runtime.InteropServices.COMException:   无法完成此操作。

有关于发生COMException的some reports,因为您需要使用完整的相对网站网址,因此您需要使用/Lists/testList/Folder/SubFolder而不是/sites/testSite/Lists/... - 我这样做。我也尝试使用绝对URL(http://sharepoint/sites/...)。问题仍然存在:我第一次尝试获取spListItem时得到了COMException 当我尝试在Exception之后再次运行代码时,收到SPListItem就好了。此外所有后续调用都有效 - 只有第一个调用失败。

AmI做了一些初始化错误或类似的东西?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

尝试实例化列表项所在的网站 - _uiserWeb

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

_item = _userWeb.GetListItem(item_url)