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

如何让ASP.NET Core Web API接口路由支持双斜杠//?

可行配置方案

方案1:全局中间件处理连续斜杠

在ASP.NET Core管道中添加自定义中间件,提前将URL中的连续双斜杠替换为单个斜杠,让后续路由系统能正常匹配现有接口。

将以下代码放在app.UseRouting()之前:

app.Use(async (context, next) =>
{
    var requestPath = context.Request.Path.Value;
    if (!string.IsNullOrEmpty(requestPath) && requestPath.Contains("//"))
    {
        // 替换所有连续斜杠为单个斜杠
        context.Request.Path = new PathString(System.Text.RegularExpressions.Regex.Replace(requestPath, @"/+", "/"));
    }
    await next.Invoke();
});

此方案全局生效,无需修改现有控制器的路由特性,所有带双斜杠的请求都会被自动修正,同时完美兼容正确格式的请求。

方案2:使用URL重写中间件

利用ASP.NET Core内置的URL重写中间件配置规则,专门处理开头的双斜杠:

若未安装相关包,先执行安装命令:

Install-Package Microsoft.AspNetCore.Rewrite

然后在管道中配置规则(需放在app.UseRouting()之前):

var rewriteOptions = new RewriteOptions()
    // 匹配开头的双斜杠,替换为单个斜杠
    .Add(@"^//(.*)", "/$1");

app.UseRewriter(rewriteOptions);

该方案符合ASP.NET Core官方扩展方式,规则配置更灵活,可针对特定路径调整匹配逻辑。

方案说明

以上两种方案都不需要修改现有接口的路由配置,能同时支持http://domain/controller/{property}和http://domain//controller/{property}格式的请求,实现平滑过渡。等客户端NuGet包的URL生成bug修复后,直接移除中间件或重写规则即可。

内容的提问来源于stack exchange,提问作者Martin Lottering

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:14:58