(超详细).Net项目一键发布到IIS

文章描述:在此之前,我一直习惯使用文件夹的发布方式,即在项目上右键->发布->文件夹。然后设置其相关属性,等vs发布完毕之后,自己再复制到服务器,很多时候还得需要先停止服务才能复制上去,感觉就很麻烦(虽然用习惯了);其实通过ftp的方式或许也可以,只是我不太喜欢,因为还得先去服务器去配置ftp等相关服务,而后这个ftp除了做这个好像也没其他用,再者,我并不能确定是否可以不手动停止服务就能直接发布上去(我从一开始就排斥,所以没试过,有兴趣的可以自己试下)。.

开发环境:.NET6

开发工具: Visual Studio 2022

实现步骤:

  1. 首先要确保IIS安装了管理脚本和工具

  2. 下载web部署包:

https://download.visualstudio.microsoft.com/download/pr/e1828da1-907a-46fe-a3cf-f3b9ea1c485c/035860f3c0d2bab0458e634685648385/webdeploy_amd64_en-us.msi

3. 安装的时候选择完全安装,好像是最后一个选项。这个很重要

4. 等安装完成后,会在IIS右键菜单上显示部署选项

(超详细).Net项目一键发布到IIS

  1. 点击部署->启用Web Deploy发布,这里设置其可以发布的用户(默认就是你当前使用的用户,密码也是你远程的密码)

  2. 输入sql字符串这里,由于我发布的是.net6 webapi,sql字符串是配置到appsettings.json中的,在这里识别不到,不过也没关系,因为在iis发布设置的时候,是可以识别到并替换的

  3. 后面两个设置也就不用管了,点设置把文件保存就ok了

  4. 把文件复制到本地,然后用记事本编辑一下,内容大致如下,记得把注释去掉

<?xml version="1.0" encoding="utf-8"?>
<publishData>
  <publishProfile
    <!--这里xxx换成服务器的IP-->
    publishUrl="https://xxx:8172/msdeploy.axd"
    <!--这里是iis需要部署的网站名称-->
    msdeploySite="Default Web Site"
    <!--这里是发布完成后打开的网址,可测试用-->
    destinationAppUrl="http://xxx:80/"
    <!--mysql连接字符串-->
    mySQLDBConnectionString=""
    <!--sqlserver连接字符串-->
    SQLServerDBConnectionString=""
    profileName="Default Settings"
    publishMethod="MSDeploy"
    userName="xxx\Administrator" />
</publishData>
  1. 回到vs2022,在WebApi项目上右键->发布->导入配置文件->我们刚刚编辑的文件

  2. 导入成功后,在这个页面点击显示所有设置
    (超详细).Net项目一键发布到IIS

  3. 在连接选项中,将服务器密码写入并选择保存密码

  4. 在设置选项中,勾选在运行时使用此连接字符串,写入正式库的连接字符串就会在发布的时候自动替换了,其他设置可根据需要填写并保存。

  5. 回到VS2022,在头部可以看到刚刚保存的配置,直接点击发布按钮即可完成发布,如果没有可以自己在头部空白部分右键找出你需要的选项。也可以通过项目右键的方式进行发布。
    (超详细).Net项目一键发布到IIS

  6. 自此就完成了一键发布的配置,以后发布就爽快多了(建议个人或者小公司使用,大公司一般会有自己比较严格的发布流程)