最近一个项目中,为App开发后台接口,技术选型为最新 .net core版本,使用.net core开发web api接口过程中,为了方便app团队成员直接在线调用接口,找了公网上的一台服务器做为app后台接口的测试服务器,并做了域名解析。服务器配置为Windows Server 2008 R2企业版,刚购买时,云服务器厂商只是安装了IIS的基本功能。所以接下来咱们基于Windows Server 2008 R2 服务器开始今天的教程。

第一:首先在IIS上安装管理服务,配置好IIS7 允许使用VS2017远程发布

为IIS7安装管理服务

桌面右键我的电脑,打开服务器管理,展开Roles(角色),选中IIS右键,添加角色服务,如下图所示:

安装管理服务

 

点击添加角色服务后,会出现一个窗口:添加角色服务窗口。在下图中选择“Web管理服务”,因我操作太快,忘记截图上传,因此找了一张英文图供大家查看,操作方式是一样的,中文时,勾选Web管理服务即可安装上此服务。执行这一步是因为云服务器厂商在装机时,不会为你安装这个服务,因此需要我们手工打造。

 

安装会等一会儿,安装好了后会在IIS的管理界面有一个管理服务的图标,如下图所示:

安装成功

 

安装成功后,在服务里面可以看到有一个服务叫:Web Management Service的服务进程。

执行到上面时,就表示安装成功了

安装Web Deploy程序

安装Web Deploy程序也是必须的,如果不安装时,在VS2017发布时会报以下错误,具体见下图。

未能连接到远程计算机(“www.jhrs.com”)。请确保在远程计算机上安装了Web Deploy 并启动了所需的进程(“Web 部署代理服务”)。在以下位置了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE。远程服务器返回错误:(404)未找到。

不安装Web Deploy报错

出现上面这个错误是因为Server 2008 R2服务器上未安装Web Deploy程序所造成的,这时你需要到服务器上安装最新版本的Web Deploy v3.6这个程序,安装好了后会在服务列表看到一个叫:的程序。Web Deploy v3.6的下载地址是:https://www.microsoft.com/zh-CN/download/details.aspx?id=43717

下载后,这家伙长这样,直接双击安装即可。

安装成功后,在服务里面有个叫:Web 部署代理服务 的服务程序,如下图所示:

Web-Deploy-Services

经过上面步骤的折腾,基本上就配置好了,接下来我们来配置IIS7,允许我们在VS2017里面直接发布.net core的 web api到服务器上。

第二:服务器端配置好IIS7,允许VS2017通过Web部署方式发布程序

设置管理服务

点击上面第3张图片的管理服务图标,进入下图设置好即可,最后别忘记点右边的启用。

为VS2017发布建立专用账户,用于更新,并授好权限

此处是在服务器端建个专门的发布用户,我是为了省事,直接授于这个账号管理员权限的,为Server 2008 r2单独建个用户不是什么难事,就直接放个结果图即可,此处操作如有什么不会的童鞋,请google下。

在上面这个步骤完成后,再返回到IIS里面,这时需要选中你的网站,再点击IIS管理权限,将你在上个步骤建的账号赋给这个网站,不然你咋远程发布.net core程序到这儿来呢?见下图姿势。

为网站设置发布用户

在上面这个图里面,把新建的用户加进来。

好了,到此呢服务器端就基本上配置完成了。接下来我们来配置我们本地开发环境的VS2017。

第三:VS2017发布配置

选中你的项目,我这儿是web api接口,网站是一样的操作,直接右键发布出现下面这个界面,按图提示选择即可,这样就是直接在本地开发环境发布到远程服务器上了。正规点的开发团队可以配置好持续集成工具,一有代码签入经过自动化测试后,可以通过这种方式发布到远程服务器上,这种方式发布是增量发布,不会每次把所有文件发布到服务器上进行替换的。这比我们传统通过复制或者FTP拷到服务器上要方便得多,省事。

在上面图这儿选择IIS、FTP等这个项目,进入下一步后,按提示配置好即可,一般 来说,出现错误都是服务器端没有配置好的。

服务器:填写域名或者IP地址,不要带 http:// 这个前缀。

站点名称:你在IIS上网站的名称

用户名和密码:就是你在服务器上专门建立的账户和密码

目标URL:发布成功后,它会自动打开这个地址。

好了,经过上面的配置,我们就可以愉快的用.net core编写web api接口随时发布给app团队使用了。

第四:我遇到的错误及处理方法

错误一:

未能连接到远程计算机(“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.

处理方法:

  • 第一:打开Properties->PublishProfiles目录
  • 第二:打开CustomProfile.pubxml,在最后一个节点(_SavePWD)后增加一个节点,配置内容是:<AllowUntrustedCertificate>True</AllowUntrustedCertificate>

如下图所示:

经过这些处理后,就做到了随时发布,随时更新.net core程序到服务器上,不需要你再远程到服务器上复制文件,再手工替换了。

通过VS2017发布.net core程序并使用Web 部署到远程服务器最新教程的更多相关文章

  1. 使用VS 2019发布.net core程序并部署到IIS的最新教程

    不管你是使用.net core开发的是web api还是网站类的程序,如果你是部署到IIS,那么下面的内容都适合于你,不会将.net core程序部署到IIS的朋友,可以看看这篇手把手教你部署.net ...

  2. 来个干货——使用VS2019发布.NET Core程序并部署到IIS的最新教程

    使用VS2019发布.NET Core程序并部署到IIS,不管你是使用.NET Core开发的是Web API还是网站类的程序,如果你是部署到IIS,那么下面的内容都适合于你,不会将.NET Core ...

  3. 从头认识一下docker-附带asp.net core程序的docker化部署

    从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...

  4. 手把手教你用Jenkins自动发布dotnet core程序

    Jenkins部分 首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/ 我们安装官网教程安装好jenkins,安装教程略.... 嗯?不是说好手把手么 ...

  5. 通过VS2019使用Web部署发布.net core程序

    服务器:Windows Server2012R2 服务器已安装好IIS 需要启用Web Management Service  与 Web部署代理服务 服务器默认是没有Web部署代理服务的  需要安装 ...

  6. docker发布.net core程序的坑

    docker发布遇到的两个问题 1:Could not resolve CoreCLR path. For more details, enable tracing by setting COREHO ...

  7. .Net Core 使用jenkins 部署到远程服务器docker

    最近一直在研究docker和kubernetes,小型的项目其实也用不到k8s,本文就是描述如何用jenkins 进行构建asp.net core 3.1项目并且发布到远程服务器docker容器中.本 ...

  8. .NET Core程序发布报错:project.assets.json”没有“.NETCoreApp,Version=v3.1/win-x64”的目标。确保已运行还原,且“netcoreapp3.1”已包含在项目的 TargetFrameworks中。

    在控制台中使用命令发布.NET Core程序的时候,报如下的错误: project.assets.json"没有".NETCoreApp,Version=v3.1/win-x64& ...

  9. 关于.net core程序的部署

    最近发布.net core程序的时候,发现它是可以独立部署的,它支持如下两种部署方式: 依赖框架的部署FDD.只发布我们的程序,运行前用户需要手动安装.net core runtime. 独立部署SC ...

随机推荐

  1. QT多个UI文件加入一个项目

    这样可在多个UI界面上进行分部开发.避免都在一个UI下太凌乱…… 在网上找了一些资料,很少有介绍这方面的,以及类似这样项目的源码. 看 一些基本控件的使用时,想到了一种方法:使用gridLayout控 ...

  2. QT 文件拖放事件dropEvent和dragEnterEvent

    重载以下两个函数,可以实现将文本文件拖放进文本编辑器 void MainWindow::dragEnterEvent(QDragEnterEvent *event)//拖进事件 { if(event- ...

  3. C# Task 的用法

    C# Task 的用法(转自:http://www.wxzzz.com/683.html#) 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来 ...

  4. Codility---Nesting

    Task description A string S consisting of N characters is called properly nested if: S is empty; S h ...

  5. 35+个实用jQuery菜单插件

    应用jQuery菜单插件可以让浏览者在浏览你的网页时获得最好的动态导航.jQuery是一个轻量级.跨浏览器的JavaScript框架(库),效果非常给力,它强调并简化了JavaScript.CSS和H ...

  6. spark streaming 接收kafka消息之四 -- 运行在 worker 上的 receiver

    使用分布式receiver来获取数据使用 WAL 来实现 exactly-once 操作: conf.set("spark.streaming.receiver.writeAheadLog. ...

  7. 使用wireshark捕获SSL/TLS包并分析

    原创博客,转载请注出处! TLS运作方式如下图:

  8. APPCAN 通信(appcan.ajax)

    引用JS: function callWebService(serviceName, params, methodType, offline, callBack, callBackError){ // ...

  9. ES5_03_Object扩展

    ES5给Object扩展了一些静态方法, 常用的2个: 1. Object.create(prototype, [descriptors]) * 作用: 以指定对象为原型创建新的对象 * 为新的对象指 ...

  10. Android使用Camera2获取预览数据

    一.Camera2简介 Camera2是Google在Android 5.0后推出的一个全新的相机API,Camera2和Camera没有继承关系,是完全重新设计的,且Camera2支持的功能也更加丰 ...