我的.csproj文件中具有这样的属性组
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
,但是当使用dotnet发布到服务器时,在服务器中发布/ p:PublishProfile = ITProfile我的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="dotnet"
arguments=".\Turvasuunnitelma.Backend.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="IT" />
</environmentVariables>
</aspNetCore>
</system.webServer>
已发布的hostingModel设置为“ InProcess”,这是怎么回事?生成时,它将值从何处获取到web.config?
并且我不使用InProcess,因为它给我HTTP错误500.0-ANCM进程内处理程序加载失败。不知道这是旧的IIS还是发生了什么,是否安装了最新的托管模块等,是否按预期在IIS中的模块中安装了AspNetCoreModuleV2。
答案 0 :(得分:0)
而且我不使用InProcess,因为它给了我HTTP错误500.0- ANCM进程内处理程序加载失败。不知道这是旧的IIS还是 这是怎么回事,安装了最新的托管模块等, IIS中的模块中的AspNetCoreModuleV2如预期的那样。当您使用 流程,您需要使用独立的AppDomain。
在您的IIS中,只需使用无托管代码选项创建一个新的Appdomain
将您的应用放入新的应用域中。
这解决了这个问题。
IIS上的.net核心进程内托管文档声明,它要求一个独立的应用程序域