通过VS2019发布.net网站
引言:本文是关于.net网站发布到服务器的站点的文章,参照了CSDN作者China_Lzw文章
原文:江小编
服务器配置为Windown Server 2019 Standard
第一:首先在IIS上安装管理服务,配置好IIS7 允许使用VS2017远程发布
为IIS7安装管理服务
1.打开服务器管理,在主页仪表盘处,添加角色服务,如下图所示:
2.安装管理服务,除了默认的服务我们将管理服务也安上,因为我的网站是ASP.NET网站
所以这里我也勾选了ASP.NET的服务,不用全部勾选,按自己需求勾选就好!
3.安装会等一会儿,安装好了后会在IIS的管理界面有一个管理服务的图标,如下图所示:
4.安装成功后,在服务里面可以看到有一个服务叫:Web Management Service的服务进程。
执行到上面时,就表示安装成功了
安装Web Deploy程序
1.安装Web Deploy程序也是必须的,如果不安装时,在VS2019发布时会报以下错误,具体见下图。
未能连接到远程计算机(“www.jhrs.com”)。请确保在远程计算机上安装了Web Deploy 并启动了所需的进程(“Web 部署代理服务”)。
在以下位置了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE。
远程服务器返回错误:(404)未找到。
(如果之后全部部署完还是报相关错误,就卸载再安装一次)
2.出现上面这个错误是因为Server 2019 Standrad服务器上未安装Web Deploy程序所造成的,
这时你需要到服务器上安装最新版本的Web Deploy v3.6这个程序。
安装成功后,在服务里面有个叫:Web 部署代理服务 的服务程序,如下图所示:
Web-Deploy-Services
经过上面步骤的折腾,基本上就配置好了,接下来我们来配置IIS7,
允许我们在VS2019里面直接发布.net网站服务器上。
第二:服务器端配置好IIS7,允许VS2019通过Web部署方式发布程序
设置管理服务
1.点击上面第3张图片的管理服务图标,进入下图设置好即可,最后别忘记点右边的启用。
为VS2017发布建立专用账户,用于更新,并授好权限
2.此处是在服务器端建个专门的发布用户,我是为了省事,直接授于这个账号管理员权限的,
直接打开计算机管理,选择本地用户和组->用户->添加用户(我这里是public_user)。
然后让该用户隶属于Administrator
3.在上面这个步骤完成后,再返回到IIS里面,这时需要选中你的网站,
再点击IIS管理权限,将你在上个步骤建的账号赋给这个网站,
不然你咋远程发布.net 网站到这儿来呢?见下图姿势。
4.为网站设置发布用户
在上面这个图里面,把新建的用户加进来。
好了,到此呢服务器端就基本上配置完成了。接下来我们来配置我们本地开发环境的VS2019。
第三:VS2019发布配置
1.选中你的网站项目,右键点击发布Web应用
2.选择IIS发布
3.进入下一步后,按提示配置好即可,一般 来说,出现错误都是服务器端没有配置好的。
服务器:填写域名或者IP地址,不要带 http:// 这个前缀。
站点名称:你在IIS上网站的名称
用户名和密码:就是你在服务器上专门建立的账户和密码
目标URL:发布成功后,它会自动打开这个地址。
好了,经过上面的配置,我们就可以愉快的发布网站了。
第四:我遇到的错误及处理方法
错误一:
未能连接到远程计算机(“www.jhrs.com”)。
请确保在远程计算机上安装了Web Deploy 并启动了所需的进程(“Web 部署代理服务”)。
在以下位置了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE。
远程服务器返回错误:(404)未找到。
处理方法:
出现上面这个错误是因为Server 2008 R2服务器上未安装Web Deploy程序所造成的,
这时你需要到服务器上安装最新版本的Web Deploy v3.6这个程序,
安装好了后会在服务列表看到一个叫:Web 部署代理服务 的程序。
Web Deploy v3.6的下载地址是:https://www.microsoft.com/zh-CN/download/details.aspx?id=43717
错误二:
已使用Web部署代理服务连接到”www.jhrs.com”,但未能授权。
请确保你是“www.jhrs.com”上的管理员。
在以下位置了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_ADMIN。
远程服务器返回错误:(401)未经授权。
处理方法:
我在部署这个时出现上面这个错误,寻找原因花了近1个小时,很是浪费哥哥时间,
原来是粗心大意犯的一个错误,在填写服务器时,它这儿不需要带 “http://”这个前缀。
错误三:
配置正确后,如果你的VS重启或者重新开关机后,
再次发布会出现不信任的证书的问题,具体报错的提示内容如下:
C:\Program Files\dotnet\sdk\2.1.402\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(139,5):
错误 : Web deployment task failed. (已使用指定的进程(“Web Management Service”)连接到远程计算机(“api.jhrs.com”),
但未能验证服务器的证书。如果你信任该服务器,请再次连接并允许不信任的证书。
在以下位置了解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED。)
已使用指定的进程(“Web Management Service”)连接到远程计算机(“api.jhrs.com”),
但未能验证服务器的证书。如果你信任该服务器,请再次连接并允许不信任的证书。
在以下位置了解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED。
基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
根据验证过程,远程证书无效。
Publish failed to deploy.
处理方法:
- 第一:打开网站下的website.publishproj文件
- 第二:在最后一个节点(<PropertyGroup></PropertyGroup>)下增加一个节点,配置内容是:<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
如下图所示:
完工:经过这些处理后,就做到了随时发布,随时更新.net 网站到服务器上,
不需要你再远程到服务器上复制文件,再手工替换了。
但任可能包含一些问题,比如网站文件夹用户权限没给够,
按照上面方法设置基本解决了百分之90以上的问题,剩下的度娘都能解决啦!