一、在Visual Studio里发布

右键点击WebApi工程,点击发布按钮,如下图所示。

点击【发布】按钮后,系统弹出发布对话框,如下图所示。

选择文件夹,点击【下一步】。

在该界面选择发布输出的目录,一般默认即可,发布到IIS时,我们把此处的文件再拷贝实际在IIS上发布的目录。然后点击【完成】按钮。

在该界面点击【关闭】按钮。Visual Studio会显示如下界面。

点击【显示所有设置】按钮,弹出的设置对话框如下图所示。

【配置】项包含Debug和Release,我们发布的话,选择Release即可。

【目标框架】选择.net9.0。

【部署模式】包括框架依赖和独立两种,如果选择独立,会把依赖的.Net 9.0的dll文件也会拷贝到发布目录下,我们是把Web API发布到IIS上,我们会部署好.net 9.0的环境,所以这里设置框架依赖即可。

【目标运行时】用来设置发布的目标,包括win-x86、win-x64、win-arm、win-arm64、osx-x64、osx-arm64linux-x64、inux-arm、linux-arm64多个目标平台,根据自己的需求选择。我们要发布到Windows的IIS上,选择win-x64即可。

【生成单个文件】,勾选可把所有的文件打包成一个exe文件,我一般不勾选该项,实际效果未做过测试。

【启用 ReadyToRun 编译】,‌是一种 ‌AOT(Ahead-of-Time)预编译技术‌,它通过将 IL(中间语言)代码预先编译为本机机器码,显著提升应用程序的启动性能和运行时效率。可根据自己的实际情况选择是否勾选。

【裁剪未使用的代码】,通过静态分析移除应用程序中未使用的代码(如未引用的程序集、类型、方法等)来优化应用体积。对体积大小敏感的程序可勾选该选项。例如MAUI开发的移动端程序,Blazor程序等,这样通过删除未被执行的代码(如未使用的库、反射未触及的类型),可显著减小应用程序包大小。WebAPI是发布到服务器端的程序,该选项勾不勾选都可以。

【在发布前删除所有现有文件】作用是 ‌清空目标发布目录中的所有旧文件‌,确保发布过程在一个干净的环境中进行,避免残留文件干扰新版本的部署。建议勾选。

【数据库】项目基本上不用,数据库一般我们都会独立的部署。

设置完这些参数后,点击【保存】按钮。此时该对话框关闭,新的设置显示到visual Studio界面上,如下图所示。

点击右上角的【发布】按钮,执行发布操作。发布成功后,Visual Studio的界面如下图所示。

点击【目标位置】项右侧的路径链接,可以快速定位到发布的目录。如下图所示。

把该目录下的所有文件,都拷贝到我们要发布的目录下。下一步就可以在IIS中发布了。

二、在IIS中发布

首先我们要安装环境,如果没有IIS的话,可以搜索把IIS启用的方法,启用IIS即可。我们主要说下安装.net 9.0 在IIS下的运行环境安装。

通过https://dotnet.microsoft.com/zh-cn/download/dotnet/9.0可以进入.net 9.0的各开发包和运行环境的下载页面,如下图所示。

我们选择下载【ASP.NET Core 运行时】,因为我们是部署到IIS上,所以选择Windows那一栏中的【Hosting Bundle】,这个安装包专为 IIS 部署设计‌,集成以下组件:ASP.NET Core 运行时、.NET 运行时和IIS 模块(ANCM - AspNetCoreModule)。如果要部署到Nginx等环境下,可下载X64版本。

下载后,直接双击,按照提示默认安装即可。安装后,重启一下IIS。

打开IIS,点击到根节点,然后在右侧双击【模块】按钮。如下图所示。

弹出的模块内容如下图所示。

如果包含了【AspNetCoreModuleV2】项,基本上就可以认为是安装成功了。

右键点击【应用程序池】,点击【新建应用程序池】弹出对话框如下图所示。

【名称】可根据自己需要命名,建议可以和发布的项目名称保持一致。【.NET CLR 版本】选择无托管代码,其他保持默认设置即可。最后点击【确定】按钮,完成程序池的新建工作。

右键点击【网站】节点,在弹出的右键菜单中点击【新建网站】按钮,弹出【新建网站】对话框。如下图所示。

输入网站的名称,选择程序池,设置发布程序存储的路径,并设置好端口,点击确定即可,此时该网站就会添加到IIS中。如下图所示。

选中刚发布的WebAPI,点击右侧的浏览按钮,可以在浏览器中测试是否可以查看。默认是访问不到任务信息,会显示HTTP ERROR 404错误。可以直接测试某个API或则打开Swagger页面,如果能打开则发布成功。但正是发布的时候,要禁用Swagger。

三、发布的时候的一些注意事项:

1、发布的网站名称和使用的程序池名称尽量保持一致,并且创建的时候一次性命名,如果命名错误,不要修改,直接删除,重新创建。这样可能会避免一些错误。(原因没有深究,只是平常使用的时候经常遇到这样的问题)

2、程序池的启动模式可以修改为AlwaysRunning,就是一直运行,另外一个设置是当第一次请求的时候才启动。

3、发布的内容所在的目录给其最高权限,例如给Everyone所有的权限等。

.Net 9.0环境下WebApi发布到IIS的更多相关文章

  1. .Netframework下WebAPI发布在IIS方法

    当前项目是前后端分离的架构,前端使用html做页面,后端使用WebAPI做接口,因为涉及到多节点响应的问题,今天进行了WebAPI发布测试,将发布流程记录如下 1.API发布 a.右键API项目,单击 ...

  2. [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”

    在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...

  3. VB6.0环境下的CATIA二次开发简介

    CATIA作为CAD/CAE/CAM/PDM一体化的软件,广泛用于航空航天.汽车.船舶及电子工业,尤其在航空航天业,有八成以上厂商使用CATIA的市场[11].然而由于使用习惯和使用的侧重点不用,功能 ...

  4. Windows-Server-2008、IIS7.0环境下配置伪静态化

    在Windows-Server-2008.IIS7.0环境下配置伪静态化                首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为 ...

  5. 使用zipkin2在SpringCloud2.0环境下追踪服务调用情况

    1.目的: 使用zipkin2.0在Spring Cloud 2.0环境下,追踪服务调用情况. 2.所需组件: zipkin2.0,Spring Cloud 2.0,Eureka Server,Eur ...

  6. 分布式环境下rabbitmq发布与订阅端

    假设rabbitmq配置了集群,且客户端连接rabbitmq-server通过lvs实现HA但一般情况下不建议做LB.在分布式系统的环境下,由于节点的非预知性,使用spring amqp模板进行配置不 ...

  7. 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件

    我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...

  8. webapi发布在iis之后报错Http 403.14 error

    服务器是 Windows Server 2008 R2 Enterprise 网上找了很多说是修改webconfig.试过之后没有效果,另外报错了. 最后才找到是因为webapi发布时选择的应用程序的 ...

  9. Hadoop2.2.0环境下Sqoop1.99.3安装

    本文转载自http://blog.csdn.net/liuwenbo0920/article/details/40504045 1.安装准备工作: 已经装好的hadoop环境是hadoop 2.2.0 ...

  10. VC++6.0环境下调试c语言代码的方法和步骤_附图

    1.C语言程序四步开发步骤 (1)编辑.可以用任何一种编辑软件将在纸上编写好的C语言程序输入计算机,并将C语言源程序文件*.c以纯文本文件形式保存在计算机的磁盘上(不能设置字体.字号等). (2)编译 ...

随机推荐

  1. CentOS 7 下 Docker 的离线安装方法

    现遇到部分学校提供的服务器并没有外网连接,故需要在断网条件下安装 Docker ,本贴简述断网安装 Docker 的方法. 去 Docker 或者相关镜像源中下载 Docker RPM 包,以下链接的 ...

  2. [每日算法 - 华为机试] leetcode345 :反转字符串中的元音字母「双指针」

    入口 力扣https://leetcode.cn/problems/reverse-vowels-of-a-string/submissions/ 题目描述 给你一个字符串 s ,仅反转字符串中的所有 ...

  3. Effective Java理解笔记系列-第1条-何时考虑用静态工厂方法替代构造器?

    为什么写这系列博客? 在阅读<Effective Java>这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受:同时 ...

  4. Golang 语言学习路线

    学习Go语言是一个很好的选择,它具有高效的编译速度.强大的并发支持和简洁的语法.适用于初学者的Golang学习路线: 1. 学习基础: 安装Go:从官方网站下载并安装Go语言的最新版本. Hello, ...

  5. 【软件】基于JSP和Bootstrap的潇湘博客平台

    潇湘博客平台 XiaoXiangBlog 说明 Eclipse 项目 - Version: 2020-06 (4.16.0). JDK8. 潇湘博客(XiaoXiangBlog) 一个简单的Java ...

  6. 配置QtJambi编译环境

    所有代码都是以C++ GUI Qt 4编程(第二版)为准,只是重新用Java + QtJambi重写了. 当前编译IDE是intellij idea 2024, 系统win 11 LTSC.需要配置的 ...

  7. 舵机SG90详解

    舵机,也叫伺服电机,在嵌入式开发中,舵机作为一种常见的运动控制组件,具有广泛的应用.其中,SG90 舵机以其高效.稳定的性能特点,成为了许多工程师和爱好者的首选,无论是航模.云台.机器人.智能小车中都 ...

  8. 使用Python和SymPy推导斯特林公式

    引言 斯特林公式(Stirling's Approximation)是一种用来近似计算阶乘的数学公式.它是数学分析中非常重要的近似公式之一,尤其在概率论.统计学.物理学等领域中广泛应用.本文将使用 P ...

  9. Rust+appium App自动化测试demo

    1.新建工程 打开RustCover,新建工程如下: 修改Cargo.toml文件如下: [package] name = "test_demo" version = " ...

  10. Clion搭建C语言开发环境

    1.下载和安装MinGW 1)下载链接:http://www.mingw.org/ 2)选择安装目录,目录尽可能简单(如:D:\MinGW)且不要包含中文和空格 3)添加相关的包 所需的包如下:min ...