【发布时间】: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