IIS 部署 .NET 6 WebApi 实战指南(附优缺点分析)

在 .NET 开发体系里,IIS 一直是部署 WebApi 的主力工具。

很多人接口写得很熟练,但真正涉及部署时,却容易卡在环境、权限、证书这些细节上。

今天我们从 0 到 1,把 .NET 6 WebApi 部署到 IIS 上跑起来,同时聊聊它适合做什么、不适合做什么。


一、环境准备

部署前,先确认三件事:

1️⃣ 已安装 IIS

控制面板 → 启用或关闭 Windows 功能 → 勾选:

  • Internet Information Services

  • Web 管理工具

  • 万维网服务

  • 应用程序开发功能

安装完成后访问:

复制代码
http://localhost

能看到默认页面说明成功。


2️⃣ 安装 .NET 6 Hosting Bundle

这是最关键的一步。

如果服务器没有安装对应版本的 Hosting Bundle,接口基本都会报:

HTTP Error 500.30 - ANCM In-Process Start Failure

下载地址(.NET 6):

https://dotnet.microsoft.com/en-us/download/dotnet/6.0https://dotnet.microsoft.com/en-us/download/dotnet/6.0


3️⃣ WebApi 已发布为 Release

在 Visual Studio 中:

右键项目 → 发布 → 文件夹 → 选择发布路径

发布完成后会得到:

  • xxx.dll

  • web.config

  • wwwroot

这就是 IIS 要指向的物理目录。


二、在 IIS 中创建站点

打开 IIS 管理器:

网站 → 右键 → 添加网站

配置如下:

  • 物理路径:选择刚才发布后的文件夹

  • 端口:例如 80(测试环境)

  • 应用程序池:默认即可(.NET Core 不依赖传统 CLR)

完成后访问:

复制代码
http://localhost:80/swagger

如果能打开 Swagger 页面,说明部署成功。


三、常见问题排查

❌ 500.30 启动失败

大概率是没有安装 Hosting Bundle,或者版本不匹配。


❌ 403 无权限访问

给站点文件夹添加权限:

  • IIS_IUSRS

  • 或 Everyone(测试环境可用)

生产环境建议精细化控制权限。


❌ 端口冲突

执行:

netstat -ano

查看端口是否被占用。


四、IIS 部署 WebApi 的优势

在 Windows 服务器环境下,IIS 部署 WebApi 仍然是非常稳妥的方案。

1️⃣ 集成度高

与 Windows 深度整合,无需额外学习 Linux 运维体系。


2️⃣ 稳定成熟

应用程序池回收机制完善,长期运行稳定。


3️⃣ 权限体系清晰

基于 Windows 账户体系控制访问权限,安全性高。


4️⃣ 操作可视化

对不熟悉服务器命令行的人非常友好。


五、那 IIS 适合部署 Vue 吗?

结论:不太理想。

原因很简单。

Vue 属于单页应用(SPA),它需要:

  • URL Rewrite 重写规则

  • 处理 history 路由模式

  • 各种重定向配置

  • applicationHost.config 相关调整

如果不正确配置,刷新页面直接 404。

IIS 本质上更偏向传统 Web 服务,并不是为现代前端应用优化的服务器。

简单静态页面还可以,但复杂前端项目维护成本较高。

如果是前后端分离项目,通常会采用:

👉 IIS 负责 WebApi

👉 Nginx 负责前端静态资源与反向代理

这才是更主流的生产架构。


六、关于 HTTPS 的说明

本文演示采用的是 HTTP 测试部署方式。

但在生产环境中,必须启用 HTTPS。

尤其是涉及:

  • 登录

  • Token 传输

  • 用户数据

  • 支付接口

如果你有部署 HTTPS 的实际需求,可以在评论区留言。

我可以单独整理一期完整内容,包括:

  • SSL 证书类型说明

  • 免费证书申请流程

  • IIS 绑定证书步骤

  • 强制 HTTP 跳转 HTTPS

  • 常见证书报错排查

  • 多域名 / 泛域名场景处理

当系统真正对外开放时:

HTTP 只是开发阶段的选择,HTTPS 才是上线的入场券。

相关推荐
唐青枫3 小时前
别只会看日志:C#.NET SOS 调试扩展从 Dump 到内存泄漏排查
c#·.net
Lost of 程序猿11 小时前
M2 实战:询价与采购订单聚合落地——跨聚合一致性、领域事件与 Outbox
开发语言·c#·asp.net·.net
有梦想的咕噜13 小时前
Newtonsoft.Json (Json.NET) 常用方法汇总
linux·json·.net
jiushidt2 天前
ArcGIS Pro Add‑in 打包流程详解
arcgis·c#·.net·arcgispro
半亩码田2 天前
【.NET新特性·第17篇】EF Core 10 与 Aspire 13.1
python·flask·.net
小羊没烦恼!3 天前
Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)
java·大数据·前端·网络·word·powerpoint·.net
张人玉3 天前
基于 C# / .NET 8 + Windows Forms + SQLite 的桌面银行业务演示系统——华夏示范银行管理系统
windows·sqlite·c#·.net
慧都小妮子3 天前
.NET 报表控件选型对比:Stimulsoft 与 FastReport 怎么选
c#·.net·报表开发·数据可视化·报表控件·报表引擎选型
我是唐青枫3 天前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
开发语言·c#·.net
geovindu3 天前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式