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

ASP.NET Core拆分Views与Controllers同域名端口部署路由问题

解决方案

  • 配置API应用路径基础
    在API项目的Configure方法最开头添加以下代码,让框架识别IIS子应用的/api前缀,匹配路由时自动剥离该前缀:
    app.UsePathBase("/api");
    
  • 修改Swagger配置为相对路径
    去掉Swagger终结点路径的前置斜杠,改为相对路径,避免从站点根路径请求Swagger资源:
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("v1/swagger.json", "My API V1");
    });
    
  • 确认IIS子应用配置正确
    1. 打开IIS管理器,右键主站点选择「添加应用程序」
    2. 别名设置为api,物理路径指向站点下的/Website/api目录
    3. 选择独立的应用程序池,托管模式设置为「无托管代码」,禁止和前端应用共用应用程序池
  • 修正子应用web.config避免配置继承冲突
    在/api目录下的web.config的<handlers>节点最开头添加移除配置,避免继承主站的handler配置导致冲突:
    <handlers>
      <remove name="aspNetCore"/>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    

配置完成后重启主站点和API子应用的应用程序池即可,此时访问www.example.com/api/login可以正常请求接口,访问www.example.com/api/swagger也可以正常打开Swagger页面。

内容的提问来源于stack exchange,提问作者A Farmanbar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:27:04