IIS发布.NET Core应用程序

概述

与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,

IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,

配置文件和过程都会由些许调整,中间最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,

请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。

部署之前要确保你的IIS上已经安装了AspNetCoreModule托管模块

安装 最新的 Runtime & Hosting Bundle  会自动安装ASP.NET Core Module v2

安装完成后通过在IIS管理台上通过 模块按钮查看,如下图

 

 

 

 

 

 

 

 

发布IIS 

 

 修改对应的程序池 为 ”无托管代码“。

 

 

接下来重启服务器;

web.config详解

vs发布后的站点文件夹下会带有一个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=".\WebStudy.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: c0312efc-432d-4ccc-af6d-cf9081c3e31e-->
上面的handlers节点下包含名称aspNetCore,modules=“AspNetCoreModule
”的节点。意思即对应IIS下的AspNetCoreModule HttpModule。 这里不要对其进行改动,保持默认配置即可。
下面的aspNetCore节点内的processPath意思表示该站点需在IIS工作进程内托管,这种模式称之为进程内托管模型。在进程内托管时,该模块会使用 IIS 进程内服务器实现,即 IIS HTTP 服务器 (IISHttpServer)。在IIS托管下使用进程内托管模式比进程外托管模式性能更强
stdoutLogEnabled属性表示是否开启日志(建议开启),
stdoutLogFile属性表示日志输出目录。
 

https://www.jianshu.com/p/a03c67feb0bd

 

posted on 2020-03-30 17:14  苏上话  阅读(708)  评论(0编辑  收藏  举报