2012-09-05 27 views
0

我在IIS6上發佈了我的網站。保存文件時System.UnauthorizedAccessException

當通過File.WriteAllText(「C:\」+ txtSaveExport.Text +「.CSV」,b.ToString());保存文件時。它給出了一個錯誤:

em.UnauthorizedAccessException:訪問路徑'C:\ hj.CSV'被拒絕。 ASP.NET無權訪問請求的資源。考慮將資源的訪問權限授予ASP.NET請求標識。 ASP.NET具有基本進程標識(通常位於IIS 5上的{MACHINE} \ ASPNET或IIS 6和IIS 7上的網絡服務以及IIS 7.5上配置的應用程序池標識),如果應用程序未模擬,則使用該標識。如果應用程序正在通過模擬,身份將是匿名用戶(通常爲IUSR_MACHINENAME)或經過身份驗證的請求用戶。

要授予對文件的ASP.NET訪問權,請右鍵單擊資源管理器中的文件,選擇「屬性」並選擇安全選項卡。點擊「添加」添加適當的用戶或組。突出顯示ASP.NET帳戶,然後選中所需的訪問權限。''

這怎麼處理?

+0

完全不建議你在做什麼,但是如果你只是想這樣做,請在C驅動器上寫入訪問「網絡服務」。 –

+0

我不想做主席先生。由於該網站將運行的任何地方,它會推斷該比賽。它需要給予許可。 – Aada

+0

在這種情況下,你不應該在''C:\'''驅動器中寫入,而應該使用像「〜\ APP_DATA」應用程序文件夾這樣的特定文件夾來用於asp.net中的這種操作。你必須賦予'app_data'文件夾的寫權限。 –

回答

1

您需要爲該文件夾中的Aspnet用戶授予寫入權限。

看到這個: http://devnet.logixml.com/rdPage.aspx?rdReport=Article&dnDocID=209

最好的問候。

+0

您好我不需要將它保存在我的服務器上,但在本地計算機上用戶正在使用 – Aada

+0

您假裝在客戶端硬盤上寫入數據? :-O 沒有插件(applet,flash,ActiveX),這是不可能的。 你應該閱讀更多關於什麼是和什麼不是Web應用程序.. – Oscar

0

寫入C:盤下的變量目錄不是一個好主意。我建議你不要在C下寫權限,而是寫到你的web應用程序目錄下的目錄,你可以通過Server.MapPath("~")得到這個目錄。請確保您將應用程序池的用戶帳戶的寫入權限授予您的應用程序目錄下的任何文件夾,並且您將更安全。

+0

我想將它保存在我的本地驅動器 – Aada

+0

哦,你的意思是你想使用瀏覽器下載該文件?如果是的話,暫時在服務器上創建它,給它一個唯一的名稱,在你的應用程序目錄下的某個地方,正如我在答案中提到的那樣。保存後,將用戶重定向到文件。就像在File.WriteAllText(Server.MapPath(「〜」)+「myfile.txt」)中保存文件一樣),通過放入頁面加載代碼將用戶重定向到該文件:Response.Redirect(「/ myfile。 TXT「)' –

相關問題