发布到 IISServer 时如何更改 HostingModel="OutOfProcess"?

Jam*_*123 9 c# visual-studio asp.net-core

我在 VS 调试窗口中将 HostingModel 设置为“进程外”。但是当将项目发布到我的开发服务器时。web.config 文件始终显示hostingModel="inprocess"。如果我删除此属性,我可以运行该应用程序。

发布时是否有任何流程我们更改hostingModel为OutOfProcess. 我正在使用 ASP.Net Core 3.1 版本的 WebAPI

在此输入图像描述

小智 12

对于 Visual Studio 2019,更改项目文件并不能解决问题。

以下行:

<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
Run Code Online (Sandbox Code Playgroud)

应添加到位于 Properties/PublishProfiles/ 项目目录中的发布配置文件“YourProfileName”.pubxml 文件中。


Off*_*'er 5

您需要了解 .Net core 的层次结构,才能准确理解您需要了解的内容。

.NetCore 从哪里读取此配置:
首先:
web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at https://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" hostingModel="InProcess"></aspNetCore>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

该值hostingModel="InProcess"将覆盖项目中现有的所有其他配置。

第二: publish profile

<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <PublishProvider>FileSystem</PublishProvider>
    <PublishUrl>bin\Release</PublishUrl>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    <EnvironmentName>staging</EnvironmentName>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

相关节点是AspNetCoreHostingModel

第三: .csproj

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
    <TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
    <IsPackable>false</IsPackable>
Run Code Online (Sandbox Code Playgroud)

您在 中拥有的任何值.csproj或publish profile将被webconfig.


Xue*_*hen 3

在VS Debug窗口更改属性,工程launchsettings.json文件同步更新,launchsettings.json供VS运行工程使用。要将应用程序配置为进程外托管,请在项目文件 (.csproj) 中将该<AspNetCoreHostingModel>属性的值设置为:OutOfProcess

<PropertyGroup>
  <TargetFramework>netcoreapp3.1</TargetFramework>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

参考:https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module ?view=aspnetcore-3.1