2011-04-21 29 views
5

我最近從Sharepoint 2007升級到2010年。我有一個Windows服務,它將pdf插入到SharePoint中。它在2007年的偉大工程,當我遷移到2010年,我開始下面的間歇性錯誤:<nativehr> 0x80070002</nativehr> Sharepoint 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將成功。

由於它不是很容易複製,我正在尋找任何可能追蹤的線索。從Google搜索中,「推薦」修補程序是將任何.GetList(...)調用更改爲SPWeb.Lists [「..」];

但是,我從了,由於PERF命中2007年(.GetList(...)具有比SPWeb.Lists更好的PERF [ 「...」])

有什麼建議?

謝謝!
Dave

+0

你試過web.Lists.TryGetList()嗎? http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistcollection.trygetlist(v=office.14).aspx – Alexey 2013-01-23 09:11:59

回答

0

也許你可以更好地理解錯誤,如果你第一次檢索到相關url的SPFolder或SPFile。檢查.GetFile(...)。Exists和.GetFolder(...)。存在。您也可以獲得ParentList屬性。

0

SPWeb.GetList如果列表不在網站中,方法肯定會引發錯誤。該方法就是這樣設計的。它已經在msdn中記錄。

如果您不確定該列表是否存在,使用Webobject.List[ListName]以避免異常。

您可以檢查我的博客SharePoint Codes示例代碼

我認爲這是遲到的答覆,但希望它可以幫助別人的未來。

+1

SPWeb.GetList()在URL上運行,而SPWeb.Lists []集合使用顯示名稱,因此它們不提供相同的功能。此外,如果您嘗試索引集合中不存在的項目,SPWeb.List []肯定會引發異常。 – 2013-04-12 17:45:08

0

什麼上SPWeb.GetList(reletiveUrl)與SharePoint 2010中的方法GetMetadataForUrl拋出錯誤解決確切的同樣的錯誤:

  • 重啓IIS
  • 重啓SPTimerV4(SharePoint 2010的定時器)
  • 重啓SPAdminV4(SharePoint 2010管理)