今天在調試一個.net的程式時出了一個小小的錯誤,錯誤如下:
編譯錯誤
說明: 在編譯向該請求提供服務所需資源的過程中出現錯誤。請檢查下列特定錯誤詳細資料並適當地修改原始碼。
編譯器錯誤資訊: CS0016: 未能寫入輸出檔案“c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\webapplication1\b3c3931b\c580ed67\2immzeyh.dll”--“拒絕訪問。
下面是從網上找到的解決辦法:
在 Windows2003 下(IIS6),用 VS2003 產生一個 asp.net 應用,然後 F5 進行調試,出現如下錯誤資訊:
“/0124”應用程式中的伺服器錯誤。
編譯錯誤 說明: 在編譯向該請求提供服務所需資源的過程中出現錯誤。請檢查下列特定錯誤詳細資料並適當地修改原始碼。
編譯器錯誤資訊: CS0016: 未能寫入輸出檔案“e:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\0124\fea90a4b\69167562\pw09que0.dll”--“拒絕訪問。 ”
源錯誤:版本資訊: Microsoft .NET Framework 版本:1.1.4322.2032; ASP.NET 版本:1.1.4322.2032
我於是用“WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files”在msdn以及網上搜了一把,搜到兩種解決方案:
修改該目錄的許可權,加上“NETWORK SERVICE”,讓它對該目錄有控制許可權。
修改IIS服務的預設賬戶為“本地系統”
經驗證,方法二可行,方法一失敗。但是方法二會導致IIS運行不安全,所以這種方法不太合適。
後來我查看了別人的配置,發現人家IIS服務的預設賬戶都是“網路服務”,這就說明我的機器的使用權限設定在某個地方存在差異。但是問題出在哪裡呢?我遍查MSDN和Google/baidu也沒有找到答案。
後來不知道抽了哪根筋,靈光一閃,看看 Windows\Temp 的使用權限設定,把 “NETWORK SERVICE”的使用權限設定為“控制”層級,再試試Debug,成了!
真是見鬼!難道說這是Windows的一個BUG?還是我的哪個地方的設定出現了問題?
上面是一個GG的BLOG,偶按照他的方法,設定了 Windows\Temp 的許可權,結果好了。
莫名其妙。