2010-12-22 95 views
6

不幸的是,我沒有很多關於此的信息。 我有一位客戶將他們的網站從古老的系統移至Windows 2008 Server上的IIS7。有關該錯誤信息是如下:IIS7權限被拒絕 - ASP文件寫入

錯誤: E:\ wwwroot的\ SP \ XXX \ online_data.xls Microsoft VBScript運行時錯誤 '800A0046'

權限被拒絕

/XXX /燕麥/ exceldata的.asp,行52

代碼:

49 response.write(server.mappath("online_data.xls")) 
50 
51 set fso = createobject("scripting.filesystemobject") 
52 Set act = fso.CreateTextFile(server.mappath("online_data.xls"), true) 

唯一的建議到目前爲止是:

grant the application pool (DefaultAppPool/Classic AppPool)’s impersonated identity read and write permission to the physical folder which the asp page reside

當我獲得訪問權限時會查看此內容,但其他建議將不勝感激。

+1

我認爲這個建議可行,另一個選擇是檢查默認的應用程序池是否作爲網絡服務運行,並給網絡服務訪問權限寫入該文件夾 – kd7 2010-12-22 02:19:24

回答

3

建議是正確的。如果由於任何配置原因,解決方案的路徑不是立即顯而易見的,請嘗試運行procmon(在「online_data.xls」上過濾)並查看誰失敗,原因以及他們運行的用戶帳戶。然後檢查ACL。

12

提供的答案是正確的,但我需要一些關於如何完成它的更多細節。要使它變得非常簡單,請按照以下步驟操作。我在內聯網的沙箱系統上設置了一個asp頁面計數器。

  1. 打開計算機管理。在默認應用
  2. 向下鑽取到IIS服務器 管理
  3. 在連接窗格中,單擊 應用程序池
  4. 在應用程序池窗格中, 右鍵單擊並選擇 高級設置。查看 過程模型部分。
  5. 默認情況下,標識屬性爲 設置爲ApplicationPoolIdentity。 這是一個內置帳戶。
  6. 如果它被設置爲默認值,那麼您的 可以使用內置用戶 machinename \ IUSR爲您的 權限設置。我不得不 指定機器名稱,因爲 這是一個虛擬化服務器,YMMV。
  7. 如果它未設置爲默認值,請使用 該用戶名作爲您的權限 設置。
  8. 取消該對話框並將 返回到Windows資源管理器,然後返回到需要添加權限的文件夾 。
  9. 右鍵點擊即可獲得權限 設置。
  10. 設置機器名\ IUSR或 非默認用戶名,您在上述步驟6/7中確定了 。根據需要授予 權限。

這幫助: http://learn.iis.net/page.aspx/140/understanding-built-in-user-and-group-accounts-in-iis-7/

2

我在Windows 7中也有類似的問題,我的解決辦法是改變身份驗證。從IIS中選擇該站點,轉到身份驗證,禁用匿名身份驗證並啓用Windows身份驗證。

0

用一些類似的東西花了一點時間。即使使用正確的設置,它也無法正常工作。

然後我試着先在服務器上創建實際的文件。原來是有效的技巧。現在我的ASP頁面寫入現有的文件沒有問題。

必須是從頭開始創建一個新的文檔,這是另一個問題。