在安装了Core 2.1的IIS 10服务器上,针对Core 2.1的ASP.NET Core应用程序构建失败

时间:2018-06-13 10:32:41

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

我刚刚在干净的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使用的命令dotnet调用Kestrel运行该站点,不在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上检查哪些配置选项和版本。

3 个答案:

答案 0 :(得分:2)

您必须为要在Visual Studio中定位的任何版本安装Core SDK。单独安装运行时将无法解决问题。您可能稍后重新启动Visual Studio以在列表中查看它。

以下是SDK 2.1下载的link(撰写本文时的最新内容)。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我在IIS Express中的开发机上遇到了相同的错误。 MVC App突然停止工作。 Eventlog提供了0x80004005错误代码。

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

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

在NuGet软件包更新期间,似乎将dotnet核心版本意外更新为2.1.4,其中已安装的版本为2.1.3。 [由于更新来自那里,可能是Nuget管理器中的错误]

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