Asp.net .net核心,如何使用额外的前导斜杠处理路由

Asp.net .net核心,如何使用额外的前导斜杠处理路由,asp.net,model-view-controller,asp.net-core-mvc,asp.net-core-2.0,Asp.net,Model View Controller,Asp.net Core Mvc,Asp.net Core 2.0,我需要处理以下形式的传入请求: //ohif/研究/1.1/系列 注意前面的exta斜线 我的控制器签名是: [Route("ohif/study/{studyUid}/series")] [HttpGet] public IActionResult GetStudy(string studyUid) 如果我将传入请求修改为/ohif/study/1.1/series,那么它可以正常工作 但是,当我使用//ohif/study/1.1/series时,路线不会被击中 此外,我还尝试了:[Rou

我需要处理以下形式的传入请求: //ohif/研究/1.1/系列 注意前面的exta斜线

我的控制器签名是:

[Route("ohif/study/{studyUid}/series")]
[HttpGet]
public IActionResult GetStudy(string studyUid)
如果我将传入请求修改为/ohif/study/1.1/series,那么它可以正常工作

但是,当我使用//ohif/study/1.1/series时,路线不会被击中

此外,我还尝试了:[Route/ohif/study/{studyUid}/series] 和[Route//ohif/study/{studyUid}/series]

两者都失败了。很遗憾,我无法更改传入的请求,因为它来自外部应用程序。这条路线有什么诀窍吗?我在.NETCore3.0中工作

更新说明: 我已激活日志记录,并且我看到asp.net core正在分析路由,我收到消息: 未找到请求路径“//ohif/study/1.1/series”的候选项
对于记录器Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware,可以在web服务器级别重写URL,例如,对于IIS,可以使用URL重写模块自动将//ohif/study/1.1/series重定向到/ohif/study/1.1/series。这不是应用程序的作业。

在web服务器级别重写URL,例如,对于IIS,您可以使用URL重写模块自动将//ohif/study/1.1/series重定向到/ohif/study/1.1/series。这不是应用程序的工作。

处理双斜杠的中间件如何

app.Use((context, next) =>
            {
                if (context.Request.Path.Value.StartsWith("//"))
                {
                    context.Request.Path = new PathString(context.Request.Path.Value.Replace("//", "/"));
                }
                return next();
            });

处理双斜杠的中间件怎么样

app.Use((context, next) =>
            {
                if (context.Request.Path.Value.StartsWith("//"))
                {
                    context.Request.Path = new PathString(context.Request.Path.Value.Replace("//", "/"));
                }
                return next();
            });

也许您可以尝试重写控制器,操作执行方法并应用一些逻辑,我想知道您是否可以用正则表达式获取它?Routeohif/study/{studyUid:regex^\\d*\.?\\d+?!。\\\\series}可能类似的东西。我没有办法测试它。@FelixCastor,regex最后处理的是斜杠问题实际上是多余的斜杠/在url的开头,我将尝试一些regex并提供反馈doh,是的,我认为最后的斜杠是问题所在…也许你可以尝试覆盖控制器,onactionexecuting方法并应用一些逻辑,我想知道您是否可以用正则表达式获取它?Routeohif/study/{studyUid:regex^\\d*\.?\\d+?!。\\\\\series}可能是类似的东西。我没有办法测试它。@FelixCastor,regex在最后处理斜杠问题实际上是额外的斜杠/在url的开头,我将尝试一些regex并提供反馈Doh,是的,我认为最后的斜杠是问题所在…我认为这是正确的方法,我还发现了一个快速解决方案,使用路径约束和catchall路由(如本文所述),我认为这是正确的方法,我还发现了一个快速解决方案,使用路径约束和catchall路由(如本文所述)