如何将.NET 7 Web API部署到IIS的子目录中
将.NET 7 Web API部署到IIS子目录的解决方案
针对.NET 7/.NET Core应用,部署到IIS子目录的操作和传统WebForms有核心区别,以下是具体步骤:
1. 关键应用池配置
.NET Core应用依赖IIS做反向代理,必须使用无托管代码的应用池,这是和WebForms(依赖.NET Framework托管代码)最核心的差异:
- 在IIS中创建或选择一个应用池,将其
.NET CLR版本设置为无托管代码 - 确保应用池的
托管管道模式为集成
2. 配置应用的路径基址
需要让.NET Core应用识别子目录路径,有两种可靠方式:
方法一:在代码中硬编码(推荐)
在Program.cs中,在路由中间件之前添加路径基址配置:
var builder = WebApplication.CreateBuilder(args); // 注册服务等逻辑... var app = builder.Build(); // 设置子目录路径基址,必须放在UseRouting之前 app.UsePathBase("/my_api"); app.UseRouting(); // 其他中间件配置(如授权、端点映射)... app.Run();
方法二:通过IIS配置传递参数
右键子目录转换为应用后,进入应用的配置编辑器:
- 选择
system.webServer/aspNetCore节点 - 在
arguments项中添加--path-base "/my_api"
3. 部署并转换为应用
- 发布.NET 7 Web API到本地文件夹(发布目标选「文件夹」)
- 将发布后的所有文件复制到IIS主网站根目录下的
my_api子文件夹中 - 右键该子文件夹,选择「转换为应用程序」,关联到之前配置好的无托管代码应用池
4. 验证访问
- 若你的API控制器路由为
[Route("api/[controller]")],则最终访问路径为https://example.com/my_api/api/xxx - 测试默认示例接口:
https://example.com/my_api/weatherforecast,确认能正常返回数据
注意事项
- 若出现404错误,优先检查路径基址是否配置正确、应用池是否为无托管代码模式
- 确保子目录的权限设置正确,给应用池标识(如
IIS AppPool\你的应用池名称)分配读写权限
内容的提问来源于stack exchange,提问作者TheIronCheek
相关产品推荐
相关产品推荐

