我需要处理一个传入的请求,其形式为://ohif/study/1.1/series注意前面的exta斜杠
我的控制器签名是:
[Route("ohif/study/{studyUid}/series")]
[HttpGet]
public IActionResult GetStudy(string studyUid)
如果我将传入的请求修改为/ohif/study/1.1/series,则可以正常工作
但是,当我使用//ohif/study/1.1/series时,路由不会被命中
此外,我还尝试:[给药途径(“/ohif/study/{studyUid}/series”)]和[给药途径(“//ohif/study/{studyUid}/series”)]
两个都失败了。不幸的是,我无法更改传入的请求,因为它来自外部应用程序。这条路线有什么诀窍吗?我在用.NET Core 3.0。
**更新注意:**我激活了日志记录,我看到asp.net核心正在分析路由,我收到消息:未找到记录器Microsoft.AspNetCore.Routing. EndpointallingMiddleware的请求路径“//ohif/study/1.1/series”的候选项
4条答案
按热度按时间mwkjh3gx1#
处理双斜杠的中间件怎么样?
s3fp2yjn2#
在Web服务器级别重写URL,例如:对于IIS,您可以使用URL重写模块将
//ohif/study/1.1/series
自动重定向到/ohif/study/1.1/series
。这不是你申请的工作kmbjn2e33#
我接受了Ravi的回答,并充实了一个中间件。中间件很好,因为它是封装的,易于测试,可以注入日志,更具可读性等。
代码和测试:
执行替换的字符串方法:
swvgeqrz4#
This SO answer类似的问题描述了另一个更简单的解决方案:使用内置的URL Rewriting Middleware。例如,双斜杠可以通过以下方式替换为单斜杠: