当在运行IIS 10的Windows Server 2016数据中心上托管ASP.NET Core MVC应用程序时,应用程序无法加载,显示以下消息:
HTTP Error 500.30 - ANCM In-Process Start Failure 我使用Visual Studio 2017 (9)创建了该应用程序,并使用.NET Core 2.2,尽管我在服务器上安装了.NET Core 2.2.3。
在服务器上:
这是应用程序的 web.config 文件:
HTTP Error 500.30 - ANCM In-Process Start Failure 我使用Visual Studio 2017 (9)创建了该应用程序,并使用.NET Core 2.2,尽管我在服务器上安装了.NET Core 2.2.3。
在服务器上:
dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 2.2.105
Commit: 7cecb35b92
Runtime Environment:
OS Name: Windows
OS Version: 10.0.14393
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.2.105\
Host (useful for support):
Version: 2.2.3
Commit: 6b8ad509b6
.NET Core SDKs installed:
2.1.4 [C:\Program Files\dotnet\sdk]
2.2.105 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
Windows应用程序事件日志显示:
应用程序'/LM/W3SVC/3/ROOT',物理根'C:\inetpub\wwwroot\healthmonitormvc'无法加载clr和托管应用程序。意外异常:在c:\b\w\da744fbcc13abce\src\servers\iis\aspnetcoremodulev2\inprocessrequesthandler\inprocessapplication.cpp:198处返回HRESULT 0x800700b7。
Github上有一些关于这个错误和hresult的讨论,但没有解决方案。
相同的代码在本地IIS上可以正常工作。myapp.exe也可以加载(以及dotnet myapp.dll
),所以看起来是一个IIS配置问题(或者在GitHub上指出的.NET Core缺陷,这意味着我可能正在寻求一个解决方法)。stdout文件被创建,但它没有任何内容。
该项目是非核心项目的解决方案的一部分。然而,我使用Visual Studio Web Publisher发布了该项目,并且它按预期运行。
一篇 Stack Overflow 的问题建议将托管模型更改为 OutOfProcess,但我不想使用 out of process。它也无法加载并显示相同的 hresult。.NET 2.2.3 可能存在重大问题。但是,因为我可以在本地运行它,所以存在一个可行的配置。这是应用程序的 web.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\my.name.space.HealthMonitor.Mvc.exe" arguments="exec ".\my.anme.space.HealthMonitor.Mvc.dll"" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
<system.web>
<compilation targetFramework="netcoreapp2.2" />
</system.web>
</configuration>
我希望页面能像在IIS Express或本地IIS中一样加载,显示默认的开箱即用页面。
dotnet MyApp.dll
。您是否看到任何异常?如果是,请将其添加到您的问题中,以及堆栈跟踪。 - Chris PrattAspNetCoreModuleV2
表示正在运行 "in-process"。你在一个应用程序池中运行多个站点吗?问这个问题是因为默认的 in-process 设置每个应用程序池只能有一个站点。 - Asons