Asp.net .net核心,如何使用额外的前导斜杠处理路由
我需要处理以下形式的传入请求: //ohif/研究/1.1/系列 注意前面的exta斜线 我的控制器签名是: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
[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路由(如本文所述)