2011-09-06 34 views
0

我有一個腳本來檢查文件是否存在。路徑是存在於服務器上的網絡共享。通過asp.net站點執行File.Exists時發生的權限問題

即,該目錄是D:\ Mainfolder \ Subfolder \ file.txt 網絡共享是\ Server \ Subfolder \ file.txt

該文件存在,但從我的asp.net站點,它說它不。 。我認爲這是一個權限問題,因爲如果該文件位於不同的文件夾中,它將起作用。

我已經添加了一堆賬戶中的共享和文件夾兩者的權限,但沒有什麼工作..

是否有顯示其用戶File.Exists被作爲執行的方法嗎?

感謝

+0

您可以打開文件服務器上的審計來確定執行文件訪問的帳戶。 – Gabe

回答

0

與Vista啓動Windows服務不允許訪問「桌面的東西」 - 這是一個安裝的驅動器盤符又名網絡共享的一個...

,你可以與權限浪費時間等等,但即使你得到它的工作,這是不支持...

確切的目標是什麼?也許還有一些其他的方法...

0

它可能會是你的應用程序池運行的用戶。您可以在IIS管理器中看到應用程序池列表。

但是,您還可以使用Process Monitor來查看用戶試圖訪問服務器上的文件(包括由於權限不足而失敗的嘗試)。你可以在http://technet.microsoft.com/en-us/sysinternals/bb896645找到它。您可能需要在文件實際存在的遠程服務器上運行此操作。

要考慮的另一件事是,當您與您的帳戶交互登錄時,D:\驅動器可能映射爲網絡驅動器,但當網站用戶「登錄」時可能不存在。你最好告訴網站使用UNC路徑(\ server \ subfolder ...)而不是D:\路徑。

1

訪問文件的用戶是在ASP.NET站點或虛擬目錄的應用程序池上配置的用戶。默認情況下,該用戶將無法訪問許多本地文件夾/文件,只讓一個網絡共享。你有兩個選擇:

  1. 更改用戶配置的應用程序池到具有訪問不僅爲運營網站所需要的本地文件的用戶,也可以訪問網絡共享。

  2. 在Web.config中配置模擬。看到這個other SO question here,它有一個從Web.config模擬配置的片段。

一些鏈接:

0

正如其他人所說,你的應用程序可能是下的應用程序池的身份運行。除非您已明確更改,否則此帳戶將不會顯示在要配置的帳戶列表中。

但是,如果您試圖通過映射驅動器訪問資源,那麼獲取這些內容不會對您有所幫助,因爲映射的驅動器僅存在於登錄用戶的範圍內。

想想這樣:你和一個同事共享一臺機器,並且映射驅動器D:\到\ serverA \ Shared \ Matt,你的同事不會登錄並且有驅動器D:\映射到你的份額。她可以自由映射驅動器D:\到\ serverX \ Secret \ Resources。

首先確保您使用的是UNC路徑,然後解決權限問題。