2008-10-15 64 views
3

我最近構建了一個程序,用於解析來自\ some_server \ c $ \ directory \ file.xls的遠程文件,並且它在我的本地計算機上工作正常,只是一個普通的aspx頁面。使用SharePoint Web部件訪問遠程文件

Then I put the program into web part form on my VM SharePoint server and I get this error: Access to the path '\some_server\c$\directory\file.xls' is denied.

的文件共享給域\身份驗證的用戶所以我不知道爲什麼會被拒絕?有可能我的SharePoint試圖用本地或網絡服務帳戶調用它?我怎樣才能讀取它?謝謝。

回答

3

Salamander是正確的,SharePoint不會以信任的方式運行。

從WSS_Medium更改爲SharePoint的信任級別在它的web.config中全是快速的解決方案,但也有安全隱患..

0

SharePoint通常運行在單獨的應用程序池中。請檢查此應用程序池的身份。

0

我認爲能夠訪問網絡路徑,您的代碼必須在FULL TRUST中運行,我認爲SharePoint不這樣做。

+0

我認爲這將是我的問題的解決方案。我正在一個安全的Intranet上工作,所以安全性是一個小問題。我如何完全信任策略文件?任何例子? – naspinski 2008-10-16 04:03:17

+0

更改您的網絡配置以包含此類設置 <! - level =「[Full | High | Medium | Low | Minimal]」 - > 我從來沒有嘗試過自己(從不需要),現在我沒有任何訪問WSS測試服務器。 – Salamander2007 2008-10-16 06:54:04

1

你能解釋進一步究竟設置的信任級別不適合你?

我認爲,如果您的應用程序池標識是域帳戶,則可以使用SPSecurity.RunWithElevatedPrivileges來使用應用程序池憑據來訪問該文件。或者,使用模擬來顯式傳遞另一個帳戶的憑據。

2

我想你需要RunWithElevatedPrivleges這將使SharePoint使用應用程序池帳戶。另外請記住,您必須確保應用程序池帳戶有權訪問該網絡共享。避免使用完全信任。

0

爲什麼不將文件存儲在SharePoint中,以便您可以更好地訪問它?將它放在隱藏的庫中,並使用SPSecurity.RunWithElevatedPrivledges訪問它。

RWEP有一些注意事項。從SPContext(即SPContext.Current.Site)獲得的對SPSite和SPWeb的任何引用仍將在登錄用戶的權限下運行。您必須明確在RWEP委託內部創建參考。

SPSecurity.RunWithElevatedPrivileges(委託() { 使用(的SPSite站點=新的SPSite(SPContext.Current.Site.Url)) { 使用(的SPWeb幅= site.OpenWeb()){ // ...用SPWeb做點什麼 } } });

如果您需要從外部sharepoint訪問文件以使用現有進程更新文件,則可以使用文件共享路徑,該文件共享路徑可用於所有SPDocumentLibrary,但要轉到操作 - >使用Windows資源管理器打開以獲取網絡路徑。

3

只是一個簡單的說明,您可能會遇到經典的NTLM雙跳問題。您可以對前端進行身份驗證,但由於前端沒有密碼,因此無法對其他服務器上的資源進行身份驗證。

以高級特權運行並根據應用程序池標識設置權限可能是移動前進的一種方式。