2011-10-17 162 views
0

當我與控制檯應用程序項目運行此代碼它工作正常,但是當我在webpart中運行它時,它會引發異常「訪問路徑被拒絕「。我想從我的SharePoint站點訪問匿名用戶的目錄信息。當使用Directory.GetFiles(...),我得到異常「訪問路徑被拒絕」

我充分存取(讀/寫)爲 「所有人」 「wwwroot文件」 文件夾中, 「匿名登錄」, 「IIS_IUSRS」

string VideosPath = @"\\10.2.10.2\inetpub\wwwroot\Videos"; 
string[] fileDirectories= 
    System.IO.Directory.GetDirectories(VideosPath, "*", SearchOption.AllDirectories); 

感謝EVERONE,我使用委託

 SPSecurity.RunWithElevatedPrivileges(delegate() 
       { 
        using (SPSite site = new SPSite(SPContext.Current.Site.Url)) 
        { 
         using (SPWeb currentWeb = site.OpenWeb(SPContext.Current.Web.ID)) 
         { 
string[] fileDirectories= 
     System.IO.Directory.GetDirectories(VideosPath, "*", SearchOption.AllDirectories); 

         } 
        } 
       } 
      ); 
解決問題
+0

此路徑相對於您的網站,您的應用程序或物理驅動器? –

+0

也許這將幫助 > http://stackoverflow.com/questions/4986293/access-to-the-path-is-denied-when-using-directory-getfiles – user997287

+0

也許這將幫助 > http://stackoverflow.com/questions/4986293/access-to-the-path-is-denied-when-using-directory-getfiles – user997287

回答

1

您的@"\\10.2.10.2\...路徑將指當前驅動器的根目錄,應該不是。

您需要:

string VideosPath = Server.MapPath("~/10.2.10.2/..."); 
... 

其中~/是您的應用程序的根目錄,只是/將是「現場」

+0

您可能想澄清:指定網絡共享與'當前驅動器'無關。\\ 10.2.10.2 \指示網絡共享等〜/ 10.2.10.2 /不是什麼意圖 –

+0

我在服務器上有一個SharePoint站點,我試圖從服務器訪問另一臺服務器(/10.2.10.2/),我的代碼在我的服務器上運行,它應該連接另一臺服務器,它應該採取視頻文件。 – ygy59

1

匿名帳戶的Web服務器不是匿名帳戶的根在遠程機器上。

要使其工作,請在兩臺具有相同名稱和密碼的計算機上創建新帳戶,然後讓該帳戶下運行該網站的應用程序池。也許只有使用這個帳戶運行IIS纔夠用,所以先試一下。

通過此操作,授予該文件夾及其所有父文件夾的帳戶權限。