2015-12-07 51 views
0

全部。發出從另一個REST服務的Sharepoint listdata.svc讀取列表

我創建了一個REST ApiController,其中包括嘗試調用Sharepoint網站的/_vti_bin/listdata.svc以獲取一個或多個Sharepoint列表的內容。

ApiController的web.config使用沒有模擬的Windows身份驗證。在代碼中,我爲DataContext.Credentials使用了System.Net.CredentialCache.DefaultNetworkCredentials。

當我使用Visual Studio在本地運行服務時,ApiController能夠在沒有任何問題的情況下調用listdata.svc,並且能夠檢索列表的全部內容。

但是,當我將ApiController部署到在系統帳戶下運行的實際IIS服務器時,對listdata.svc的調用不會檢索任何結果。從我在ApiController的日誌記錄中可以看到的內容中,沒有拋出異常生命。根據日誌,列表只顯示爲空(0項)。

我已檢查以確保IIS系統帳戶具有對Sharepoint網站的正確訪問權限。

任何有關爲什麼行爲差異的想法?

+0

嘗試運行應用程序池作爲系統以外的任何帳戶。我無法確定IIS的使用情況,但在Windows系統帳戶中,經常會阻止任何提升作爲域用戶運行的操作的嘗試。網絡服務應該爲此正常工作。這可能不是問題,但容易檢查,如果它仍然無法工作,也許可以分享一些源代碼。 –

回答

0

找出問題所在。考慮到我曾經是SharePoint網站管理員,這個問題有點令人尷尬。

我忘記了使用SharePoint可以同時爲站點和列表授予對於不相互繼承的給定站點的權限。

無論出於何種原因,本網站對我嘗試訪問的列表有一組權限,這些權限與一般網站不同。

所使用的系統帳戶具有完全控制的網站權限。但對於有問題的列表,他們沒有權限(但其他帳戶,像我自己的帳戶那樣)。這可以解釋爲什麼系統帳戶可以連接到該站點的列表服務,但該列表顯示爲空。

給系統帳戶讀取列表的權限後,一切正常。

這裏的激情是:僅僅因爲一個帳戶具有網站權限並不意味着它適用於網站中的所有列表,如果管理員決定單獨允許列表。

希望以上所有內容都有意義。

相關問題