我正在尝试将 ASP NET Core 2.0 完整框架应用程序部署到 Windows Server 2012 R2 中的 IIS,但一直失败。该应用程序在 VS2017 本地运行良好,当我手动运行 EXE 并连接到 localhost:5000 上的 kestrel 服务器时,该应用程序也可以在服务器上运行。但是,尝试在 IIS 中托管总是会导致 IIS 出现错误 500。
我已按照https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x但我没有看到任何提到使用完整框架(而不是 net core)设置 asp net core 2。该应用程序使用 EF6,因此它以完整的 .net framework 461 为目标。安装了 .NET Core Windows Server Hosting 包,然后重新启动了服务器。服务器上还运行着其他标准 asp.net 网站。根据说明配置了 asp net core iis 站点,其中应用程序池设置为“无托管代码”。
web.config 是
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\appng.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
<httpErrors errorMode="Detailed" />
</system.webServer>
</configuration>
<!--ProjectGuid: c458df4b-f145-427d-9bfb-5959b2a0932b-->
在 web.config 中启用 stdout 日志记录显示以下错误:
Hosting environment: Production
Content root path: C:\inetpub\appng
Now listening on: http://localhost:17402
Application started. Press Ctrl+C to shut down.
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HL7V7O2GO450", Request id "0HL7V7O2GO450:00000001": An unhandled exception was thrown by the application.
System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section runtime. (C:\inetpub\appng\appng.exe.Config line 3)
appng.exe.config的内容是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.Serialization.Xml" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
</dependentAssembly>
</assemblyBinding>
... [lots more assemblybindings]
</runtime>
</configuration>
我曾尝试在此处搜索与此相关的任何错误,但根本找不到任何东西。
任何帮助将不胜感激。