ASP.NET Core怎样部署到 IIS 进行托管

前言

 

ASP.NET Core 部署到 IIS 进行托管

 

ASP.NET Core 部署到 IIS 进行托管

 

1.2 修改应用程序池为:无托管代码/集成

 

ASP.NET Core 部署到 IIS 进行托管

 

1.3 映射演示域名

 

修改 C:WindowsSystem32driversetchosts 文件映射如果下

 

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
172.16.10.227   www.di.com # 这里的域名就是在 IIS 中设置的演示域名

 

ASP.NET Core 部署到 IIS 进行托管

 

ASP.NET Core 部署到 IIS 进行托管

 

1.5 访问部署好的网站

 

在浏览器中输入地址:http://www.di.com/

 

ASP.NET Core 部署到 IIS 进行托管

 

好了,现在已经部署成功了。虽然简单粗暴,但是我们干出来了,为了避免以后会使用到各种部署姿势,下面一个小节的内容你还需要了解一下。

 

ASP.NET Core 部署到 IIS 进行托管

<?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=".Deploy.IIS.dll" 
                  stdoutLogEnabled="false" 
                  stdoutLogFile=".logsstdout" 
                  hostingModel="outofprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: ea8ea1cd-a655-48c6-ad48-1cca646c2db7-->

 

ASP.NET Core 部署到 IIS 进行托管

 

进程外托管

 

选择进程外托管时,web.config 配置节点 system.webServer/aspNetCore.hostingModel 的值必须设置为:outofprocess,选择进程外托管,实际上就是告诉 IIS ,当前应用程序不使用 IISHttpServer,改为使用 Kestrel 服务器

 

不同托管模式下代码的变化

 

当你在 Program.cs 中使用默认的代码创建服务器的时候,不管使用的是 inprocess 还是 outofprocess ,代码是无需改变的,就像下面的代码,其中,要关注的代码是:WebHost.CreateDefaultBuilder(args),表示使用默认的构建

 

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
               .UseStartup<Startup>();
}

 

ASP.NET Core 部署到 IIS 进行托管

强烈建议使用 WebHost.CreateDefaultBuilder(args) 的默认构造,别去踩那么多的坑

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        return new WebHostBuilder()
            .UseKestrel()
            .UseIIS()
            .UseIISIntegration()
            .UseStartup<Startup>();
    }
}

 

结束语

 

为了更灵活的针对各种部署环境进行发布预热,大家可以通过 dotnet publish -? 来学习更多发布命令的配置

 

代码下载

https://github.com/lianggx/EasyAspNetCoreDemo/tree/master/Deploy.IIS

未经允许不得转载:996ICU » ASP.NET Core怎样部署到 IIS 进行托管

赞 (0) 打赏