我有一个 .NET WebApi 解决方案。我正在限制对 HTTPS 的访问,但有条件地允许 HTTP 流量。条件之一是所有 HTTP 请求都必须使用 HTTP POST 方法,传递x-http-method-override
标头以提供预期的方法,以便可以正确路由请求。我已经配置了一个全局DelegatingHandler
来验证所有传入的请求并在需要时执行重定向。
使用标准路由,一切都很好。当我配置 AttributeRouting 时,事情就出轨了。似乎 AttributeRouting 在DelegatingHandler
修改请求之前尝试定位路由,导致路由不正确或 IIS 404 错误。有没有办法在 AttributeRouting 处理程序解析路由之前拦截路由?
更多信息:该项目托管在 IIS 上(非自托管)。我使用的 AttributeRouting 是 WebApi 2.0 中的。因此DelegatingHandler
在 中定义App_Start
:
GlobalConfiguration.Configuration.MessageHandlers
.Add(new MyCustomDelegateHandler());
AttributeRouting 配置简单,使用:
GlobalConfiguration.Configuration.MapHttpAttributeRoutes();
路由是使用属性定义的:
[HttpGet("api/test/v1/users")]