【发布时间】:2019-04-19 13:03:08
【问题描述】:
通过此链接,您可以了解 ASP.NET Core 模块
要将应用配置为进程内托管,请将属性添加到应用的项目文件中,值为 InProcess(进程外托管使用 OutOfProcess 设置)
看了好几遍还是没明白什么意思?
什么时候必须使用 OutOfProcess,什么时候必须使用 InProcess?
这些模型的优缺点?
做决定时要依靠什么?
【问题讨论】:
通过此链接,您可以了解 ASP.NET Core 模块
要将应用配置为进程内托管,请将属性添加到应用的项目文件中,值为 InProcess(进程外托管使用 OutOfProcess 设置)
看了好几遍还是没明白什么意思?
什么时候必须使用 OutOfProcess,什么时候必须使用 InProcess?
这些模型的优缺点?
做决定时要依靠什么?
【问题讨论】:
指的是 IIS 如何托管您的应用程序 (web.config)。
InProcess:IIS 托管应用程序(w3wp.exe 或 iisexpress.exe)
OutOfProcess:Kestrel 托管应用程序,IIS 是 kestrel 的代理。
更多details关于如何配置以及使用时要记住的每一个。
根据Microsoft,'InProcess' 具有明显更好的性能。
要配置 InProcess 添加 web 配置:
<?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="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
<environmentVariables />
</aspNetCore>
</system.webServer>
</location>
</configuration>
对于OutOfProcess:
<?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="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess">
<environmentVariables />
</aspNetCore>
</system.webServer>
</location>
</configuration>
当您将在 my-api 文件夹中生成构建或使用以下命令直接发布到您的服务器时:
dotnet publish -o my-api -c release
会注意您的 %LAUNCHER_PATH% 和 %LAUNCHER_ARGS%。
你在最初的问题中提到的可能是关于 .csproj 配置,它决定了应用程序如何在本地运行,默认是 OutOfProcess
【讨论】: