2010-07-20 77 views
0

以下是該場景: 我們有一個開啓了匿名訪問的外部SharePoint實例。我們希望文檔庫向公衆開放。我們不希望自定義列表打開。這很簡單,可以配置。使用匿名訪問從ASP.Net Web應用程序中以命名用戶的身份訪問SharePoint API

現在我們要使用這些列表來創建一個有吸引力的外部ASP.Net Web應用程序。這個網站也需要啓用匿名。

問題是我們需要從Web應用程序訪問這些列表而不打開它們進行匿名訪問。

我們希望使用API​​(而不是Web服務),因爲它將託管在相同的框中。

到目前爲止,我們一直無法創建一個具有相應訪問權限的SPUser來打開列表。

SPContext爲空。

這樣做也失敗了: SPSite temp = new SPSite(URL); SPUserToken token = temp.SystemAccount.UserToken;

SPSite site = new SPSite(URL,token); ...做用戶的東西。

RunWithElevatedPrivileges也失敗。

請幫忙!

回答

0

您是否正在使用SharePoint 2010?他們有更多的選項可供其他應用程序訪問。如果不是2010年,您將不得不使用某種Web服務,無論是OTB還是您自己的Web服務,它們封裝了您的邏輯,因爲SP OM不會在非SharePoint框中運行。

獨立於此,您可以嘗試從應用程序池獲取SPToken。基本上是

SPUserToken sysToken = SPContext.Current.Site.SystemAccount.UserToken; 
using(var systemSite = new SPSite(SPContext.Current.Site.ID, sysToken)) 

Daniel Larson是使用RunWithElevatedPriveleges這種方法的主要支持者。看看他的blog post就此事。

+0

不在2010年。我們在2007年。該應用程序將與SharePoint在同一個框中,這就是我們爲什麼要使用該API的原因。 以上代碼在第一行中引發的對象引用未設置爲對象錯誤的實例。 – SPCoder 2010-07-20 18:55:16

+0

根據執行代碼的方式,可能不會設置SPContext。您可能需要根據您要加載的網址獲取對網站集的引用。 – 2010-07-20 19:57:13

相關問題