【问题标题】:.Net Core AspNetCoreHostingModel what does it mean?.Net Core AspNetCoreHostingModel 是什么意思?
【发布时间】:2019-04-19 13:03:08
【问题描述】:

通过此链接,您可以了解 ASP.NET Core 模块

要将应用配置为进程内托管,请将属性添加到应用的项目文件中,值为 InProcess(进程外托管使用 OutOfProcess 设置)

看了好几遍还是没明白什么意思?

什么时候必须使用 OutOfProcess,什么时候必须使用 InProcess?

这些模型的优缺点?

做决定时要依靠什么?

【问题讨论】:

    标签: asp.net-core .net-core


    【解决方案1】:

    指的是 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

    【讨论】:

    • 也许在发布时默认是 OutOfProcess,但现在(至少在 VisualStudio2019 社区中)托管模型显示“默认(处理中)”
    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    相关资源
    最近更新 更多