如何在请求到达控制器之前验证URL

时间:2017-07-20 23:21:55

标签: c# asp.net-mvc asp.net-core asp.net-core-mvc

我们的服务使用ASP.NET Core,在应用程序管道中,我们有几个在StartUp.cs Configure(IApplicationBuilder app)方法中配置的中间件。

通过此方法添加中间件: app.UseMiddleware<Type>();

我想验证HttpContext.Request.Path并确保它可以命中其中一个控制器。如何获取中间件代码中的可用路由列表(控制器路径),或者是否有更简单的方法来查看此特定请求路径是否会命中一个已注册的控制器?我们使用xxxxcontroller : ControllerBase[Route("controller/{version}/{id}]属性来注册控制器。

非常感谢。

2 个答案:

答案 0 :(得分:0)

我建议你看一下Asp.net的核心身份,如果我理解了你要找的东西,你需要使用角色来保证访问某些路线。

答案 1 :(得分:0)

我不知道如何获取所有路由的列表并检查路径是否为有效路由,但是您可以使用中间件检查MVC运行后的响应状态代码,如果状态代码是404,那么您知道它不是一个有效的路线,你可以相应地处理它。

UseStatusCodePagesWithReExecute扩展方法基本上使用此方法不仅处理404错误而且处理所有错误状态代码。