初识.net core-发布到IIS

简述、与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将HTTP响应数据重新回写到IIS中,最终转达到不同的客户端(浏览器,APP,客户端等)。而配置文件和过程都会由些许调整,中间最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。

一、检查安装AspNetCoreModule托管模块

发布前首先查找IIS-模块下是否已经安装AspNetCoreModule托管模块,如果没有下载安装合适版本的 Windows Server Hosting

二、发布项目

1、在已有的.Net Core项目上-右键发布-创建新配置文件-选择IIS、FTP-发布

初识.net core-发布到IIS_第1张图片

2、发布文件如下

初识.net core-发布到IIS_第2张图片
初识.net core-发布到IIS_第3张图片

三、 在IIS中添加网站

1、添加网站-填写名称、端口,并将路径指向你刚才发布的文件夹,然后启动网站即可

初识.net core-发布到IIS_第4张图片

2、应用程序池里找到对应的程序池-将.NET CLR版本为“无托管代码”

初识.net core-发布到IIS_第5张图片

3、按照如上配置、一个.NetCore的IIS环境就搭建完成,下面开始正式浏览

初识.net core-发布到IIS_第6张图片

然后检查日志信息 报错:System.Data.SqlClient.SqlException (0x80131904): 用户 'sa' 登录失败。

于是我一通查找appsettings.json的连接字符串,发现没错呀!然后用sa登录sqlserver 也可以呀,对应查找了数据库中sa的权限组,发现还是没错啊,可是怎么就报这个sa登录失败呢?

最后发现 除了appsettings.json外下面还有两个连接配置文件,如下

初识.net core-发布到IIS_第7张图片

于是把appsettings.json里面的连接字符串贴到appsettings.production.json和appsettings.Staging.json里面-重新启动-继续浏览-继续报错:System.Data.SqlClient.SqlException (0x80131904): 无法打开登录所请求的数据库 "EHS_LawQuery"。登录失败。用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。

已经看到错误改变了,这时候找到三个连接字符串里面的Trusted_Connection=True;后去掉这个验证-重新启动-浏览-又有另一个错误:用户‘IIS APPPOOL\LawQuery’ 登录失败

我们找到应用程序池-高级设置-将标识里面的内置账户设置为NetWorkService

初识.net core-发布到IIS_第8张图片

最后重新启动-继续浏览

OK 终于大功告成!

初识.net core-发布到IIS_第9张图片

你可能感兴趣的:(初识.net core-发布到IIS)