0

我已经安装了 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.

有任何想法吗?

4

1 回答 1

-1

有关对我有用的答案,请参阅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 位模式。在那之后,一切都很好。

于 2017-12-14T13:55:44.537 回答