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

【AIGC】Claude Code的CLAUDE.md加载时机与书写最佳实践

I. CLAUDE.md 文件:项目级 vs 全局级 完全解析 CLAUDE.md 是 Claude Code 提供的简化版规则配置文件(对比多文件的 rules 文件夹),核心作用是定义 AI 需遵循的代码规范、项目要求等,而「项目根目录的 CLAUDE.md」和「用户主目录的 ~/.claude/CLAUDE.md」的核心区别在于作用域和优先级,下面分维度讲清楚: 一、核心区别(作用域+使用场景) 维度项目根目录 CLAUDE.md用户主目录 ~/.claude/CLAUDE.md作用域仅对当前项目生效(项目内所有文件)对当前用户下的所有项目生效使用场景定义当前项目的专属规则(如项目特有编码规范、业务约束、依赖版本)定义跨项目的通用规则(如个人编码习惯、全项目通用安全规范、

在昇腾NPU上跑Llama 2模型:一次完整的性能测试与实战通关指南

在昇腾NPU上跑Llama 2模型:一次完整的性能测试与实战通关指南

目录 * 在昇腾NPU上跑Llama 2模型:一次完整的性能测试与实战通关指南 * 引言:从“为什么选择昇腾”开始 * 第一幕:环境搭建——好的开始是成功的一半 * 1.1 GitCode Notebook 创建“避坑指南” * 1.2 环境验证:“Hello, NPU!” * 第二幕:模型部署——从下载到运行的“荆棘之路” * 2.1 安装依赖与模型下载 * 2.2 核心部署代码与“坑”的化解 * 第三幕:性能测试——揭开昇腾NPU的真实面纱 * 3.1 严谨的性能测试脚本 * 3.2 测试结果与分析 * 第四幕:性能优化——让Llama跑得更快 * 4.1 使用昇腾原生大模型框架 * 4.

解决llama.cpp项目Vulkan后端编译难题:从环境配置到实战修复

解决llama.cpp项目Vulkan后端编译难题:从环境配置到实战修复 【免费下载链接】llama.cppPort of Facebook's LLaMA model in C/C++ 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 你是否在编译llama.cpp的Vulkan后端时遇到过"找不到Vulkan库"或"编译失败"的问题?本文将系统梳理Windows、Linux和Docker环境下的完整解决方案,帮助你顺利启用GPU加速功能。读完本文后,你将掌握:Vulkan SDK的正确配置方法、常见编译错误的诊断流程、跨平台构建脚本编写,以及性能验证技巧。 Vulkan后端编译环境准备 Vulkan作为llama.cpp支持的GPU加速后端之一,需要特定的开发环境配置。官方文档docs/build.

机器人导论 第六章 动力学(1)——牛顿欧拉法推导与详述

机器人导论 第六章 动力学(1)——牛顿欧拉法推导与详述

机器人动力学分析复习速通 机器人分析分为 牛顿欧拉法、拉格朗日法、高斯法、凯恩方法 matlab提供的逆动力学采用的是牛顿欧拉法:RNE——Recursive Newton-Euler 需要三个参数,第一个是给定最终的角度,第二个是速度,第三个是角加速度,返回各个关节所需要的力矩。 可选参数有重力加速度和负载fext 牛顿欧拉法 我们的目标是给定机器人的关节位置 q、速度 qd 和加速度 qdd,计算出为了产生这个运动状态,每个关节需要施加多大的驱动力矩 。 一上来看到有人问——我们不是用力域雅可比解决了每个关节应该分配多大力矩的问题了吗? 这是我初学的时候也弄混的问题。 “力域雅可比”解决的是一个不同的问题,属于静力学或外力映射范畴,他的目的是将作用在机器人末端执行器上的外力/力矩 映射到对应的关节空间力矩 。 区别就是一个是给定运动状态,计算每个关节为了达到这个运动状态需要多大力; 另一个则是给定末端的力,计算这个力分配在各个关节上是多大。 牛顿欧拉法的精髓在于正推和逆推,我们来看这个过程: * 正向递推(Forward Recursion):从基