簡體   English   中英

0x80004005 新安裝的 TFS2018 Express 拒絕訪問。 無法執行 roslyn\\csc.exe

[英]0x80004005 Access is Denied on new install of TFS2018 Express. Can't execute roslyn\csc.exe

我已經安裝了 TFS2018 Express。 它似乎已完全安裝。

當我嘗試訪問其網站組件時,出現 Win32 0x80004005 Access is Denied 錯誤。 堆棧跟蹤引用了 roslyn 子目錄中的 csc.exe 程序。 失敗的命令提到另一個目錄中的文件。

我見過其他線程說不要在 32 位模式下運行 TFS。 安裝程序沒有問我,我不知道如何告訴它在 64 位模式下運行。

其他線程說我需要向目錄添加讀取和執行權限。 哪個目錄/目錄? 我已將它添加到整個網站目錄及其子目錄以及引用的文件目錄中。

該產品在權限不足的情況下自行安裝而不告訴我們需要哪些權限,這似乎非常愚蠢。

錯誤消息告訴我什么命令失敗了。

[Win32Exception (0x80004005): Access is denied]

[ExternalException (0x80004005): Cannot execute a program.  The command being executed was:

"d:\Program Files\Microsoft Team Foundation Server 2018\Application Tier\Web Services\bin\roslyn\csc.exe" /shared /keepalive:"10" /noconfig /fullpaths @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\tfs\af7cc5\244hjudj.cmdline"

只是為了測試,經過一段時間的斗爭后,我將 roslyn 目錄和 TFS(和子)目錄的完全控制權交給了提到 cmdline 文件的域用戶。 錯誤消息沒有變化。

我將上述命令放入命令行並運行它。 我收到此錯誤消息:

error CS2011: Error opening response file 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\tfs\af7cc5\244hjudj.cmdline'
warning CS2008: No source files specified
error CS1562: Outputs without source must have the /out option specified.

有什么想法嗎?

請參閱https://developercommunity.visualstudio.com/content/problem/165639/0x80004005-access-is-denied-on-new-install-of-tfs2.html#以獲得對我有用的答案。

關鍵要素是該程序是通過 iso 安裝程序安裝的,當需要 64 位模式時,它顯然導致網站以 32 位模式運行。

這導致網站重新編譯為 64 位模式:

C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Temporary ASP.NET 下的文件由 ASP.NET 編譯器創建。 很奇怪,錯誤信息提到

C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319 而不是

C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319

因為 TFS 必須在 64 位應用程序池中運行。 您能否確保“Microsoft Team Foundation Server 應用程序池”和“Microsoft Team Foundation Server 消息隊列應用程序池”應用程序池配置為在 64 位進程中運行?

為此,您可以執行以下操作:

1) 打開 IIS 管理器 (inetmgr.exe)

2) 選擇應用程序池頁面

3) 選擇“Microsoft Team Foundation Server 應用程序池”,單擊右側窗格中的“高級設置...”鏈接。

4) 確保啟用 32 位應用程序設置為 False。

5) 對“Microsoft Team Foundation Server 消息隊列應用程序池”重復步驟 3 和 4

確認應用程序池配置為在 64 位進程中運行后,打開 IIS 管理器中的站點頁面並找出 Team Foundation Server 站點的 ID(第二列)。 通常為 1 或 2。

之后,從提升的命令提示符執行以下操作:

c:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\aspnet_compiler.exe -errorstack -m /LM/W3SVC/ 1 /root/tfs

將粗體 1 替換為您的 Team Foundation Server 站點的 ID。

它是否報告任何錯誤?

就我而言,應用程序池上的 32 位設置是正確的,並且 aspnet_compiler.exe 命令導致網站切換到 64 位模式。 在那之后,一切都很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM