0x80004005在新安装的TFS2018 Express时拒绝访问。无法执行roslyn \ csc.exe

时间:2017-12-08 19:16:52

标签: tfs2018

我已经安装了TFS2018 Express。它似乎已完全安装。

当我尝试访问其网站组件时,我得到Win32 0x80004005 Access is Denied错误。堆栈跟踪引用roslyn子子目录中的csc.exe程序。失败的命令提到另一个目录中的文件。

我见过其他线程说不以32位模式运行TFS。安装程序没有问我,我不知道如何告诉它以64位模式运行。

其他线程说我需要为目录添加读取和执行权限。哪个目录/目录?我已将它添加到整个网站目录及其子项以及引用的文件目录。

对于产品安装自身权限不足并且不告诉我们需要哪些权限,这似乎相当愚蠢。

错误消息告诉我哪个命令失败。

[Win32Exception(0x80004005):访问被拒绝]

[ExternalException(0x80004005):无法执行程序。正在执行的命令是:

“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文件的域用户。错误消息没有变化。

我将上面的命令放入命令行并运行它。我收到此错误消息:

错误CS2011:打开响应文件'C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ tfs \ af7cc5 \ 244hjudj.cmdline'时出错 警告CS2008:未指定源文件 错误CS1562:没有源的输出必须指定/ out选项。

有什么想法吗?

1 个答案:

答案 0 :(得分:-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管理器中打开站点页面并找出ID   Team Foundation Server站点(第二列)。通常是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位模式。在那之后,一切都很好。