2014-03-31 62 views
24

我試圖從'AppPool'中使用'ApplicationPoolIdentity'啓動一個名爲'SomeAppPool'的網站,當我這樣做時我收到以下錯誤我啓動網站:IIS ApplicationPoolIdentity沒有寫入'臨時ASP.NET文件'的權限

當前標識(IIS_APPPOOL \ SomeAppPool)沒有寫權限 'C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \臨時ASP.NET文件'

我在Windows 8下使用Visual Studio 2012(無需附加調試器)啓動「使用本地IIS Web服務器」的網站。

我注意到的第一件事是'臨時ASP.NET文件'文件夾甚至不存在 ,所以沒有設置安全權限。

第二個問題是,即使有文件夾,我將設置什麼權限?我假設我不應該爲通過「ApplicationPoolIdentity」創建的每個用戶設置權限。對?

目前的解決方案,我已經看到了簡單的建議來設置用戶「網絡服務」 但是這似乎打破「ApplicationPoolIdentity」 介紹了該網站的隔離。

+0

我有完全相同的問題。你能找到解決方案嗎? –

+0

不,很遺憾,我還沒有找到任何解決此問題的方法。我開始認爲事實上沒有解決辦法。我發現很難相信微軟會添加'ApplicationPoolIdentity'特性而不考慮對.NET應用程序的影響。 – karmasponge

+0

我應該添加一個明確的答案,而不是在.NET應用程序中使用「ApplicationPoolIndentity」嗎? – karmasponge

回答

1

正在C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319嘗試運行aspnet_regiis.exe命令。

通常應該設置權限。如果Windows添加/刪除程序發生,或者如果安裝了新的.NET版本,這些事情會重置一些。運行aspnet_regiis.exe應該有幫助。

此外,請確保您以管理員身份運行Visual Studio。

+1

如果我嘗試爲v4.0運行'aspnet_regiis.exe -I'。在Windows 8下的30319框架我收到一條錯誤消息,說它不支持。看到這篇文章:http://www.c-sharpcorner.com/UploadFile/7e39ca/how-to-install-Asp-Net-4-5-in-windows-8/。 – karmasponge

+0

我已經設置Visual Studio始終以'管理員'身份運行,雖然在這種情況下,我不明白爲什麼會有所作爲(因爲我在IIS下運行)。 – karmasponge

53

This ASP.NET forum answer,在其線程中未被確認,對我來說是解決方案。這也影響不大:它不會嘗試重新註冊IIS或給用戶帶來危險的權限。總結答案:

  1. 以管理員身份打開命令窗口(開始/程序/附件,然後右鍵單擊命令提示符,然後選擇「以管理員身份運行」)。
  2. 輸入以下命令:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Aspnet_regiis.exe -ga domain\user 
    

替換您的域和用戶在上面的例子domain\user。這就是它所需要的。

Aspnet_regiis.exe的Microsoft文檔是here。請注意,-ga開關的文檔涉及版本3.5及更早版本中的一個錯誤,它不適用於本地帳戶。如果我正確閱讀,所有版本都支持域帳戶,並且從Framework 4.0開始支持本地帳戶。


更新2017年6月6日:對於Windows 8及以上,考慮dism命令。它覆蓋在this SO answer。感謝@codebrain提出這個建議。


更新2015年7月7日:@Vertigo親切評論說,這個答案還曾爲NETWORK SERVICE帳戶在.NET 2.0 2008R2/2012下,所以我上面的聲明有關的本地帳戶前4.0可能是錯誤的。

如果其他人發現這適用於.NET 3.5或更早版本的本地帳戶,請隨時編輯我的答案或在評論中註明它;對於那些可能會遇到同樣問題的人來說,這將是一個很大的幫助。

+1

使用此解決方案爲2008R2/2012下的版本2.0創建缺失的臨時文件夾。面對「NETWORK SERVICE」帳戶沒有問題(雖然它不是真正的本地帳戶)。 – Vertigo

+0

感謝您的更新@Vertigo!這些文件很難讓我遵循(這不是我的專業領域),所以你的評論極大地提高了我的答案;我真的很感激它。 –

+4

如果包含空格,請務必在引號中包圍'domain \ user'部分,例如'... -ga「IIS AppPool \ DefaultAppPool」' –

2

隨着最新投票的解決方案,請檢查您的磁盤空間,並確保有足夠的磁盤空間可用。

我剛剛在我們的一臺生產服務器上遇到了這個問題,它與低磁盤空間有關。

0

我剛剛遇到了這個,我做的是創建一個新帳戶,可以說它的「Webby」。

在ISS中,進入頁面的高級設置並將「物理路徑憑據」更改爲Webby帳戶。上面的路徑字段包含網頁目錄;在資源管理器中打開該文件夾並添加具有修改權限的Webby。在「失敗的請求追蹤」下有一個日誌目錄;添加修改,並將「Enabled」設置爲true(以後可以關閉它,但要確保它能正常工作)。 在這一點上,你可以嘗試你的網站,你應該肯定會得到錯誤信息,因爲你正在使用的用戶。

當前標識(YOUR \ Webby)不具有對'C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files'的寫訪問權限。

現在,要解決您的問題,您需要轉到'C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files'目錄並再次將Webby添加到該目錄中修改作品。

只爲網站使用特殊帳戶的解決方案是一個好主意。它是一個真實的帳戶(不像ApplicationPool那樣虛擬),Windows不會感到困惑(...)。

希望這會有所幫助。

3

我面臨同樣的問題。我檢查路徑c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\尋找Temporary ASP.NET Files,但沒有任何文件夾的名稱。所以我手動創建了一個新文件夾,並將其命名爲Temporary ASP.NET Files,並解決了問題。

因此,確保提到的路徑存在。

0

我通過將應用程序池使用的用戶添加到IIS_IUSRS組來解決了錯誤。

相關問題