You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:42:34