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

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 才是上线的入场券。

Read more

【JWT】JWT(JSON Web Token)结构化知识体系(完整版)

【JWT】JWT(JSON Web Token)结构化知识体系(完整版)

文章目录 * JWT(JSON Web Token) * 一、基础认知层:定义与核心边界 * 1. 核心定义 * 2. 诞生背景 * 3. 适用与不适用场景 * 二、核心结构层:JWT的标准格式与字段规范 * 1. Header(头部) * 2. Payload(载荷) * 3. Signature(签名) * 三、核心原理与标准工作流程 * 1. 核心底层原理 * 2. 标准全流程(前后端分离核心场景) * 四、算法体系与分类规范 * 1. JWT两大分支:JWS vs JWE * 2. JWS核心签名算法 * (1)对称加密算法(HS系列) * (2)非对称加密算法(RS/ES/PS系列)

前端表单验证策略:别让用户输入垃圾数据!

前端表单验证策略:别让用户输入垃圾数据! 毒舌时刻 表单验证?听起来就像是前端工程师为了显得自己很专业而特意搞的一套复杂流程。你以为随便加个required属性就能解决所有验证问题?别做梦了!到时候你会发现,用户输入的垃圾数据还是会被提交到服务器。 你以为用正则表达式就能验证所有输入?别天真了!正则表达式的复杂度能让你崩溃,维护起来比业务代码还麻烦。还有那些所谓的表单验证库,看起来高大上,用起来却各种问题。 为什么你需要这个 1. 提高数据质量:良好的表单验证可以确保用户输入的数据符合要求,提高数据质量。 2. 改善用户体验:实时的表单验证可以及时反馈用户输入的错误,改善用户体验。 3. 减少服务器负担:在前端进行验证可以减少无效请求,减轻服务器负担。 4. 提高安全性:表单验证可以防止恶意输入,提高应用的安全性。 5. 符合业务规则:表单验证可以确保用户输入符合业务规则,减少业务错误。 反面教材 // 1. 仅使用HTML5验证 <form> <input type="email" required&

OpenClaw dashboard命令后,无法登录web控制面板(在systemd服务无法启动的一些虚拟机里会碰到)

OpenClaw dashboard命令后,无法登录web控制面板(在systemd服务无法启动的一些虚拟机里会碰到)

先上结论 执行OpenClaw dashboard命令后,无法登录web控制面板,是因为OpenClaw的gateway服务没有起来。原来小龙虾OpenClaw 的命令没有学明白,先弄清楚命令: openclaw onboard 是配置 openclaw dashboard是显示web控制面板登录信息 openclaw gateway --verbose 是启动网关 openclaw gateway start是启动网关服务 问题就是因为这台系统的systemd没有起作用,导致openclaw的gateway服务没有起来,所以控制面板无法登录。 OpenClaw status Overview ┌─────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Item │ Value │ ├─────────────────┼────────────────────────────────────

Webots R2023b 完整安装配置教程

Webots R2023b 完整安装配置教程 声明:本教程由豆包、ChatGPT等AI工具协助完成。 本教程讲解如何安装 Python3、包管理器 Micromamba、必要依赖包(如 opencv-python),以及 Webots 仿真软件,并完成 Micromamba Python 环境与 MATLAB 地址的配置,适用于 Windows、macOS 双系统。 一、前置说明 1. 适用场景:需要使用 Webots 进行仿真开发,同时依赖 Python 进行脚本编写、OpenCV 进行图像处理,通过 Micromamba 管理 Python 环境,并关联 MATLAB 路径用于联合开发。 2. 版本约定(兼容性最优): * Python: