我正在開發SharePoint 2007的解決方案,並且我正在使用SPSecurity.RunWithElevatedPrivileges,傳入SystemAccount的UserToken。由SPRequestContext緩存導致的RPC_E_ATTEMPTED_MULTITHREAD錯誤的解決方案SPSites?
閱讀http://hristopavlov.wordpress.com/2009/01/19/understanding-sharepoint-sprequest/後,我終於開始明白,爲什麼我得到這些System.Runtime.InteropServices.COMException(0x80010102):企圖使在單線程模式不止一個線程調用。 (異常來自HRESULT:0x80010102(RPC_E_ATTEMPTED_MULTITHREAD))錯誤,但似乎沒有解決方案 - 「產品中的已知問題」
該文章已超過一年。我無法找到任何更近的和有幫助,但我希望也許有其他人?
我的代碼是這樣
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite elevatedSite = new SPSite(web.Site.ID, web.Site.SystemAccount.UserToken))
{
using (SPWeb elevatedWeb = elevatedSite.OpenWeb(web.ID))
{
// some operations on lists and items obtained through elevatedWeb
}
}
}
的錯誤拿出的地方使用這種升高的代碼,而且往往當有誰使用這些功能更多的用戶,所以我想也許是升高的SPSite越來越緩存和重用。
有什麼辦法解決這個問題嗎?如果我的理解是正確的,如何讓Sharepoint忘記緩存的SPSites,並使用新的而不是?
感謝