.NetCore程序发布到IIS上面

时间:2023-03-10 00:40:32
.NetCore程序发布到IIS上面

一、概述

在传统的.NET Framework中,ASP.NET程序发布到IIS上面,是由IIS的工作进程(w3wp.exe)托管的,在任务管理器中可以找到该进程。在ASP.NET Core程序中不再是由IIS工作进程托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,然后将接收到的请求推送至中间件管道中,处理完请求后在将HTTP响应数据重新回写到IIS中,最终通过IIS转达到不同的客户端。在这过程中,最重要的角色便是AspNetCoreModule(.net core 2.0以上版本中是AspNetCoreModuleV2),它是IIS中的一个模块,HTTP请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中。因为IIS只是作为反向代理负责转发请求,不负责监听HTTP请求端口,所以不需要使用应用程序池来托管我们的代码。

1、查看是否安装AspNetCoreModule

在IIS中选中主页,然后选择功能视图里面的模块,如下图所示:

.NetCore程序发布到IIS上面

双击进入模块,查看是否安装,如下图所示:

.NetCore程序发布到IIS上面

注意:

如果没有AspNetCoreModule,需要去微软网站下载.net core Runtime,网址:

https://dotnet.microsoft.com/download

下载.NET Core runtime

二、发布项目

这里选择发布到文件系统。

1、在要发布的项目上面右键选择发布,如下图所示:

.NetCore程序发布到IIS上面

2、选择要发布到的文件夹

.NetCore程序发布到IIS上面

3、高级配置

点击高级,可以打开配置界面,在这里可以配置生成模式(Debug或者Release)、目标框架等,如下图所示:

.NetCore程序发布到IIS上面

4、发布

点击高级里面的保存,然后点击发布按钮,开始发布程序,出现如下图所示的界面表示发布完成。

.NetCore程序发布到IIS上面

三、在IIS中添加网站

1、添加网站

在IIS中添加一个网站,设置网站名称,并将网站的物理路径指向刚才程序发布的文件夹,如下图所示:

.NetCore程序发布到IIS上面

2、设置应用程序池

在前面的概述中已经说过:IIS在这里只是作为反向代理,不负责托管代码,所以要把应用程序池的.NET CLR版本设置成“无托管代码”,如下图所示:

.NetCore程序发布到IIS上面

3、浏览网站

在.NET Framework编写的ASP.NET项目中,选中左侧的网站,然后点击右侧的浏览,即可浏览网站,在.NET Core项目中需要手动输入完整的网址才可以浏览,不能直接浏览,如果直接浏览,会提示找不到网页,如下图所示:

.NetCore程序发布到IIS上面

重新访问:http://localhost:10012/api/values

.NetCore程序发布到IIS上面

到此为止,如何将一个.NET Core程序发布到IIS上面已经讲解完成。