.Net 9.0环境下WebApi发布到IIS
一、在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的更多相关文章
- .Netframework下WebAPI发布在IIS方法
当前项目是前后端分离的架构,前端使用html做页面,后端使用WebAPI做接口,因为涉及到多节点响应的问题,今天进行了WebAPI发布测试,将发布流程记录如下 1.API发布 a.右键API项目,单击 ...
- [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”
在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...
- VB6.0环境下的CATIA二次开发简介
CATIA作为CAD/CAE/CAM/PDM一体化的软件,广泛用于航空航天.汽车.船舶及电子工业,尤其在航空航天业,有八成以上厂商使用CATIA的市场[11].然而由于使用习惯和使用的侧重点不用,功能 ...
- Windows-Server-2008、IIS7.0环境下配置伪静态化
在Windows-Server-2008.IIS7.0环境下配置伪静态化 首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为 ...
- 使用zipkin2在SpringCloud2.0环境下追踪服务调用情况
1.目的: 使用zipkin2.0在Spring Cloud 2.0环境下,追踪服务调用情况. 2.所需组件: zipkin2.0,Spring Cloud 2.0,Eureka Server,Eur ...
- 分布式环境下rabbitmq发布与订阅端
假设rabbitmq配置了集群,且客户端连接rabbitmq-server通过lvs实现HA但一般情况下不建议做LB.在分布式系统的环境下,由于节点的非预知性,使用spring amqp模板进行配置不 ...
- 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件
我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...
- webapi发布在iis之后报错Http 403.14 error
服务器是 Windows Server 2008 R2 Enterprise 网上找了很多说是修改webconfig.试过之后没有效果,另外报错了. 最后才找到是因为webapi发布时选择的应用程序的 ...
- Hadoop2.2.0环境下Sqoop1.99.3安装
本文转载自http://blog.csdn.net/liuwenbo0920/article/details/40504045 1.安装准备工作: 已经装好的hadoop环境是hadoop 2.2.0 ...
- VC++6.0环境下调试c语言代码的方法和步骤_附图
1.C语言程序四步开发步骤 (1)编辑.可以用任何一种编辑软件将在纸上编写好的C语言程序输入计算机,并将C语言源程序文件*.c以纯文本文件形式保存在计算机的磁盘上(不能设置字体.字号等). (2)编译 ...
随机推荐
- Linux下磁盘分区调整(在不使用LVM的情况下)
当硬盘分区不使用LVM的时候,将不能使用lvresize等指令调整 在调整分区之前,先来了解一下当前的磁盘分区信息1:使用Fdisk指令查看后发现sda1的分区有195309568个Sectors(扇 ...
- 模型即产品?从应用角度看AI产品发展趋势
提供AI咨询+AI项目陪跑服务,有需要回复1 在ChatGPT发布后的两年里,AI应用层的发展可以用一个词来评价不温不火,到去年年初时甚至有些疲软的情况.其原因有三点: 第一,算力不足,模型API响应 ...
- 【Java】RESTful风格
RESTful风格 REST:即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所 ...
- 应用引入LLM实践
LLM最近在各行各业遍地开花,产生了很好的效果,也落地了很多好的功能应用. 无论是从实际应用角度,还是从营销角度,我们都需要接入大模型能力. 拿国内比较火的Deepseek来说,具有良好的推理能力,可 ...
- redis的fd与epoll是怎么使用的
Redis 的高性能网络模型核心依赖于 文件描述符(fd) 和 epoll 的协同工作.下面我将从底层机制到实际应用,详细解析它们的配合方式: 一.核心组件关系图 二.fd 在 Redis 中的具体应 ...
- zookeeper选主机制
Zookeeper选主机制 一.Server工作状态 每个Server在工作过程中有四种状态: LOOKING:竞选状态,当前Server不知道leader是谁,正在搜寻. LEADING:领导者状态 ...
- 理解.NET Core中的配置Configuration
什么是配置 .NET中的配置,本质上就是key-value键值对,并且key和value都是字符串类型. 在.NET中提供了多种配置提供程序来对不同的配置进行读取.写入.重载等操作,这里我们以为.NE ...
- infiniswap用到的技术
infiniswap来自 NSDI'17,其代码主要用到以下技术: configfs(主要) configfs-用户空间控制的内核对象配置 https://www.kernel.org/doc/Doc ...
- 微信小程序 6/12 的坑
配置 小程序的时候配置请求的是 https://xxx 不是http://xxx 前端请求的链接都是https
- EFCore(五)——多个DBContext的Code First指定对应的DBContext更新
此环境为ASP.NET Core的项目 1.在需要更新的DBContext里添加空的构造函数 2.打开Nuget命令行选择对应的目录位置 3.带参数-Context指定对应的DBContext 1. ...