.net core 部署 Web Deploy发布 及部署问题
- 需要注意的点见:https://www.cnblogs.com/itsvse/p/13785107.html
-
安装资源
一、IIS上部署
aspnetcore-runtime
dotnet-hosting
dotnet-sdk
安装好,重启。开发机又当服务器,需要装SDK,SDK安装时会自动安装运行时,需要安装如下:
安装vs的时候,只会安装 sdk from visual studio
注意iis要安装全:
IIS配置
第一步:发布的时候先要选择IIS
第二步:增加网站,且要修改下应用程序池。
-
二、Web Deploy发布
-
一、首先要确保服务器上的IIS和web deploy已经完全安装,这里建议安装web deploy时选择完全安装,否则可能会有401等错误。
-
二、 打开之后按照图片中设置
-
主要是启用远程连接,而且标识凭据中根据需求选择只用windows凭据还是同时使用IIS凭据。
- 注意端口号必须添加到“入站规则”,对应防火烟端口打开,(自己服务器,就是服务器路由上设,如果云服务器,就要在云服务器上设(如华为云))
-
WMSVC服务在服务列表中是:web mangement service
三、点击你的站点,在功能列表中选择IIS管理器权限,右边点击允许用户,选择windows类型的用户,添加你的账号
-
四、右击站点,选择部署-启用web deploy发布
-
到这里如果一切正常,按照发布流程已经可以发布了。如果有550错误,401授权错误等,继续往下看。
-
401授权错误,可以按照如下步骤尝试:
- 验证错误,直接改用系统的用户。
- 在服务器本地用户中创建 WDeployAdmin 和 WDeployConfigWriter. 并设置密码(第四步还将用到)。二者都同时勾选“密码永不过期“ 。
- 添加WDeployAdmin 到Administrators组
- 打开C:\\Windows\system32\inetsrv\config—属性—安全,添加WDeployConfigWriter并赋予修改和写权限
- 打开IIS,选择”Management Service Delegation ( 管理服务委派)”将这里所有用户名为WDeploy* 的点击右侧的“编辑”—“设置”填写第一步添加的用户名和密码。
- 打开IIS对应站点,选择”iis管理权限” 允许用户 WDeployAdmin 和 WDeployConfigWriter
- 您无权使用所提供的凭据查看此目录或页面。
iis-对应站点:目录浏览-启动
550错误,可尝试如下步骤:
- 找到站点根目录
- 属性-安全-给local service、IIS_IUSERS分配修改权限
-
IIS发布有时会报如下错:
可能是2019的bug,需要点一下验证“连接”
三、发布成功,服务器文件夹没文件:
查看发布配置是不是“站点名称”不对。
如果是第一次发布,一定是第一次发布才可以,不然里面的文件都没了,可以选择发布前删除原文件,好了以后再改回来。
HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
也可能是数据库连接不对。
原因:被进程内托管了。因为asp.net代码发布之后默认是在IIS中托管,.netcore是无托管代码的,这个知识点要记住。
所以:删除webconfig中的配置,hostingModel="InProcess"即可;hostingModel="InProcess"代表进程内托管。
aspnetcore-runtime-5.0.12-win-x64
四、本地没问题,发布后swagger不能正常显示,也不报错。如下
原因:
1、可能是防火墙拦截了。如果用了华为云之类的,那需要云端把端口打开一下。
2、换chrom浏览器看看,或换台机器看看。
五、本地没问题,部署到服务器有问题
原因:自定义的接口没配置对,如下图没有配置路由,就会报错。
六、前后台分离,后端分配本地ip不行给前端调用,发现不可以,只能分配外网IP
七、前后台发布在一起
app.UseDefaultFiles();
八、突然报错:was loaded over an insecure connection. This file should be served over HTTPS.
现象是所有的下载都出现了问题。而且报不安全之类的提示。
解决办法:网络增加https证书。