【问题标题】:ASP.NET Core app build to target Core 2.1 fails on IIS 10 server where Core 2.1 is installed在安装了 Core 2.1 的 IIS 10 服务器上构建以 Core 2.1 为目标的 ASP.NET Core 应用程序失败
【发布时间】:2018-06-13 10:32:41
【问题描述】:

我刚刚在干净的 Server 2016 托管服务器上设置了 IIS 10,并安装了我收集到的以下软件包,以允许 IIS 托管 ASP.NET Core 应用程序:

aspnetcore-runtime-2.1.0-win-x64.exe
dotnet-hosting-2.1.0-win.exe
dotnet-runtime-2.1.0-win-x64.exe

我已将我的应用程序直接安装到默认网站中,并将C:\inetpub\wwwroot\ 中的所有文件替换为我的应用程序文件。我也确实为网站分配了一个没有托管代码的应用程序池,所以这不是我的问题。

上次我的应用程序是用 2.0 构建的,我安装了上述软件包的最新版本,我确定是 2.0,我唯一的错误是 IIS 用来调用 Kestrel 的命令 dotnet运行该站点,不在 PATH 环境中。变量

现在,当我尝试在 Server 2016 机器上浏览到 localhost 时,出现以下错误,可在 Windows 事件日志中找到:

应用程序 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE' 与物理 root 'C:\inetpub\wwwroot\' 无法使用命令行启动进程 'dotnet .\QuickDrive.Mvc.dll', ErrorCode = '0x80004005 : 8000808c.

最初我尝试使用与以前相同的构建版本,即 2.0,当我收到此错误时,我将应用程序重新构建为目标 2.1。我能找到的几乎每个搜索结果和相关的 SO 答案都表明存在版本冲突,但现在运行时和服务器上的托管包之间至少应该没有版本冲突。也许还有其他我不知道的版本冲突?

至少我在寻求一些关于如何获取更详细诊断信息的建议,即使我没有得到直接告诉我要在 Windows 和 IIS 上检查哪些配置选项和版本的答案。

【问题讨论】:

  • 如果你想在 VS 中定位它,你必须安装 Core 2.1 SDK link。单独安装运行时是不行的。
  • 谢谢,@R.Richards。你应该回答,我会接受 - 我最终猜想我必须安装 SDK 并且这样做很有效。但是,现在将我的目标框架升级到 2.1 后,我得到了我在另一个问题中描述的错误:stackoverflow.com/q/50836389/8741
  • 这是一个迁移的应用程序?
  • 当你发布这个应用程序之前它是否在 2.0 上工作,其次当你将它发布到有问题的服务器时你是怎么做的?
  • @mvermef Ny 迁移您的意思是从 .NET 4.7 迁移到 Core,还是从 Core 2.0 迁移到 2.1?我使用 Core 2.0 的目标框架从头开始对其进行编码。当我在以前的主机 Server 2012 上将它发布到 2.0 时,它可以工作。当我将它发布到我设置了 2.1 的新主机时,它不起作用。我所有的发布都是一个简单的文件夹发布,其中发布将文件输出到一个文件夹,我将这些文件复制到服务器并将它们放在inetpub\wwwroot,因为它是服务器的默认网站。

标签: iis asp.net-core .net-core asp.net-core-mvc asp.net-core-2.0


【解决方案1】:

您必须为要在 Visual Studio 中定位的任何版本安装 Core SDK。单独安装运行时并不能解决问题。之后您可能需要重新启动 Visual Studio 才能在列表中看到它。

这是 SDK 2.1 下载的link(截至本文撰写时的最新版本)。

【讨论】:

  • 我最诚挚的歉意。当我说我会接受时,我以某种方式想象我只是询问了目标框架,而问题的核心实际上是关于我的应用程序在托管服务器上失败,在那里我得到了问题中引用的错误。我希望我能给你更多的分数,而不仅仅是 1 票,但你确实有我最诚挚的感谢。
【解决方案2】:

我通过在 PowerShell 中运行 dotnet myWesite.dll 解决了这个问题,首先我发现 dotnet.exe 不在 PATH 环境变量中,修复它之后,再次运行 dotnet myWesite.dll 给了我一个有意义的错误消息,缺少一个程序集,因为在我发布网站时它尚未包含在内。

【讨论】:

    【解决方案3】:

    我在 IIS Express 的开发机器上遇到了同样的错误。 MVC 应用程序突然停止工作。 Eventlog 给出了0x80004005 错误代码。

    在尝试了多个建议后,调试有线错误代码的解决方案是在控制台中运行应用程序:

    [Project bin folder]> dotnet [projectname].dll
    

    似乎在 NuGet 包更新期间,dotnet core 版本意外更新到 2.1.4,而安装的版本是 2.1.3 [可能是 Nuget 管理器中的错误,因为更新来自那里]

    我编辑了项目文件以引用可用版本 (2.1.3),应用开始正常运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 2019-02-26
      • 1970-01-01
      • 2019-03-18
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多