摘要
与ASP.NET时代不同,ASP.NET核心不再由IIS工作进程(w3wp.exe)托管,而是由自托管Web服务器(Kestrel)运行。IIS充当反向代理,将请求转发到红隼不同端口上的ASP.NET核心程序,然后将收到的请求推送到中间件管道。处理完你的请求和相关的业务逻辑后,把HTTP响应数据写回IIS,最后传输到不同的客户端(浏览器、APP、客户端等)。).虽然配置文件和流程会稍作调整,但中间最重要的角色是AspNetCoreModule,它是IIS模块之一。请求进入IIS后,它会立即转发,并快速重定向到ASP.NET的Core项目,所以我们此时不需要设置一个应用程序池来托管我们的代码,它只负责转发请求。
在部署之前,请确保您的IIS上安装了AspNetCoreModule托管模块。如果没有,请单击此处下载并安装
首先,安装IIS
1.检查控制面板下的IIS管理控制台程序启用或禁用Windows功能互联网信息服务和网站管理工具
第二,发布项目
1.发布我们上次构建的ASP.NET核心API项目,然后选择IIS来创建新的发布配置
2.发布方法选择文件系统,然后设置发布路径
3.可以根据您的在线和离线环境选择配置文件。因为它是基于。NET Core,目标框架是netcoreapp1.1,然后保存并发布
4.当然也可以基于CLI的publish命令进行Publish,只需切换到Light的根目录即可。并输入以下命令
dotnet publish-framework netcore app 1.1-output ' e : publish '-configuration release framework表示目标框架,output表示要发布的目录文件夹,configuration表示配置文件,相当于我们通过管理器发布的上述操作,如图:
第三,在IIS中添加一个网站
1.添加网站,设置名称,指向刚刚发布的文件夹的路径,然后启动网站
2.设置。NET CLR版本的应用程序池改为“无托管代码”,因为正如我刚才所说,IIS是一个反向代理,不需要它来管理代码
3.好了,你完成了。浏览我们的网站。
这时我的心碎了,没有有用的提示信息。似乎只能自己查看应用程序的运行日志
4.将IIS的日志模式设置为日志文件和ETW事件
5.再次访问网站,然后打开Windows应用程序日志,就会看到这样的消息。这意味着您的应用程序已经由进程启动,进程号为3236,正在端口25636上侦听。
我打开任务管理器检查了一下,完全正确。一切都应该正常,那么为什么访问的网站是404?
我纠结了很久。原来网站没有自动重定向到/swag/ui页面。重访:http://192 . 168 . 1 . 105/swag/ui,会看到一个熟悉的画面
6.最后,实际上,您还可以通过CLI运行已发布的程序,切换到已发布的文件夹,并输入以下命令:
dotnet Light。API.dll
看到这个提示,那你就成功了。尽量访问:http://localhost :5000/swag/ui
这时,如果你回头看任务管理器,会出现另一个dotnet进程
写在最后
至此,整个IIS建设已经完成。不知道你有没有收获。接下来不知道发布到Linux会有什么样的漏洞。反正你的每一步,回头看,都是值得的!