我最近从Sharepoint 2007升级到2010.我有一个将pdfs插入sharepoint的Windows服务。它在2007年运行良好。当我迁移到2010年时,我开始收到以下间歇性错误:
<nativehr>0x80070002</nativehr>
at Microsoft.SharePoint.Library.SPRequestInternalClass.GetMetadataForUrl(String bstrUrl, Int32 METADATAFLAGS, Guid& pgListId, Int32& plItemId, Int32& plType, Object& pvarFileOrFolder) at
Microsoft.SharePoint.Library.SPRequest.GetMetadataForUrl(String bstrUrl, Int32 METADATAFLAGS, Guid& pgListId, Int32& plItemId, Int32& plType, Object& pvarFileOrFolder) at Microsoft.SharePoint.SPWeb.GetList(String strUrl)
以下是令人讨厌的代码行:
SPList parentList = web.GetList(url);
奇怪的是,这只会偶尔失败。我实际上已经包裹了这一行循环,如果它失败了,我等一下,然后再尝试获取列表。通常在几次尝试之后,GetList将成功。
由于它不容易重复,我正在寻找任何我可以追踪的线索。
从谷歌搜索,“推荐”修复是将任何.GetList(...)调用更改为SPWeb.Lists [“..”];
但是,由于2007年的打击(.GetList(...)有比SPWeb.Lists [“...”]更好的性能,我摆脱了这一点)
有什么建议吗?
谢谢!
戴夫
答案 0 :(得分:0)
如果您第一次检索到与相关网址相关的SPFolder或SPFile,也许您可以更好地理解错误。检查.GetFile(...)。存在和.GetFolder(...)。存在。你也可以得到ParentList属性。
答案 1 :(得分:0)
SPWeb.GetList
如果网站中没有列表,方法肯定会引发错误。该方法就是这样设计的。它已在msdn。
如果您不确定列表是否存在;使用Webobject.List[ListName]
来避免异常。
您可以查看我的博客SharePoint Codes以获取示例代码
我认为这是迟到的回复,但希望将来有所帮助。
答案 2 :(得分:0)
在SharePoint 2010上方法SPWeb.GetList(reletiveUrl)
中抛出错误的GetMetadataForUrl
上解决了完全相同的错误:
IIS
SPTimerV4
(SharePoint 2010计时器)SPAdminV4
(SharePoint 2010管理)