2011-04-07 105 views
1

我正在運行託管在iis express 7.5上的wcf服務。 服務內部,我有一個服務操作,需要在文件系統上寫一個文件,但是當它試圖這樣做時,我得到一個異常。iis-express文件訪問權限

我正在通過使用以下代碼將文件寫入項目所在的同一文件夾: string filePath = HttpContext.Current.Server.MapPath(「。」);

,但我不斷收到此異常:

DirectoryNotFoundException - 「找不到路徑C的一部分:\網站....

好像我的IIS Express不具有權限寫入文件。 如果是這樣,我怎麼給它的權限?

感謝!

回答

5
  1. IIS快遞下使用當前登錄用戶的身份運行。如果您嘗試寫入的文件夾具有某些特殊訪問權限,請爲當前用戶提供acccess。

  2. File.Open(filePath,FileMode.Create)只會創建文件,如果目錄不能退出,它會拋出'DirectoryNotFound'異常並且是預期的。所以,在創建文件之前,請確保該目錄存在。可能你可以使用Directory.CreateDirectory(「目錄路徑」)API

+0

謝謝!當我先創建目錄時,問題就解決了,然後才創建文件。我以爲File.Open應該一起做這件事,但我確實是錯的。 – 2011-04-07 18:01:13

2

您需要授予寫入權限NETWORK SERVICE帳戶您正在嘗試寫的文件夾。此外MapPath方法德ES相對URL到虛擬目錄的根目錄:

var path = HttpContext.Current.Server.MapPath("~/"); 
+0

感謝您的快速回復!我只是提到,我試圖創建的文件應該創建在一個仍然不存在的文件夾中,所以我使用FileStream fs = File.Open(filePath,FileMode.Create);我給了網絡服務的所有權限,並將其添加到我的c:\文件夾,但仍然得到相同的異常:「無法找到路徑的一部分'C:\網站\ myproject \ project.Web \ newfolder \ 21Icon.jpg」。」 – 2011-04-07 10:21:03