ASP.NET Core应用程序构建到目标Core 2.1在安装Core 2.1的IIS 10服务器上失败

ASP.NET Core应用程序构建到目标Core 2.1在安装Core 2.1的IIS 10服务器上失败,iis,asp.net-core,.net-core,asp.net-core-mvc,asp.net-core-2.0,Iis,Asp.net Core,.net Core,Asp.net Core Mvc,Asp.net Core 2.0,我刚刚在干净的服务器2016托管服务器上安装了IIS 10,并在计算机上安装了我收集的以下软件包,以允许IIS托管ASP.NET核心应用程序: 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\中的所有文件替换为我的应用程序文件。我也给网站分配了一个没有托管代码的应用程

我刚刚在干净的服务器2016托管服务器上安装了IIS 10,并在计算机上安装了我收集的以下软件包,以允许IIS托管ASP.NET核心应用程序:

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
,不在路径env中。变数

现在,当我尝试在Server 2016计算机上浏览到
localhost
时,在Windows事件日志中发现以下错误:

应用程序“MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE”具有物理 根“C:\inetpub\wwwroot\”无法使用命令行启动进程 'dotnet.\QuickDrive.Mvc.dll',错误代码='0x80004005:8000808c

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


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

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


这里是SDK 2.1下载的一个示例(本文撰写时的最新版本)。

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

在IIS Express的开发计算机上,我遇到了相同的错误。MVC应用程序突然停止工作。事件日志给出了
0x80004005
错误代码

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

[Project bin folder]> dotnet [projectname].dll
似乎在NuGet软件包更新期间,dotnet核心版本意外更新为2.1.4,其中安装的版本为2.1.3 [可能是Nuget manager中的一个bug,因为更新是从那里开始的]


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

如果您想在中实现这一目标,则必须安装Core 2.1 SDK。单独安装运行时是不行的。谢谢,@R.Richards。你应该回答,我也会接受——我最终猜我必须安装SDK,这样做很有效。然而,现在在将我的目标框架升级到2.1之后,我得到了我在另一个问题中描述的错误:这是一个迁移的应用程序?当你发布这个应用程序之前,它在2.0上运行吗?其次,当你将它发布到有问题的服务器时,你是如何做到的?@mvermef Ny迁移的意思是从.NET 4.7迁移到Core,还是从Core 2.0迁移到2.1?我用Core2.0的目标框架从头开始编写。当我在上一台主机Server2012上将其发布到2.0时,它成功了。当我把它发布到新主机上时,我在那里安装了2.1,但它不起作用。我所有的发布都是一个简单的文件夹发布,其中publish将文件输出到一个文件夹,我将这些文件复制到服务器上,并将它们放置在服务器的默认网站中。我最衷心的道歉。当我说我会接受的时候,我在某种程度上想象我只询问了目标框架,而问题的核心实际上是关于我的应用程序在托管服务器上失败的问题,我在问题中引用了错误。我希望我能给你更多的分数,而不仅仅是1票,但我真的非常感谢你。