【发布时间】:2013-11-26 22:10:45
【问题描述】:
我有一个 .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")]
【问题讨论】:
-
感谢您的更新...看起来您正在使用 Web API 2 的非 RTM 位,这可能存在您所说的问题。在 Web API 2 的 RTM 位中,您不能再像上面那样定义属性路由...请看这里:asp.net/web-api/overview/web-api-routing-and-actions/…
-
看看。会告诉你进展如何。
-
是的,更新库并从 HttpGet 更改为 Route 似乎可以解决此问题。介意用修复更新您的回复,我会接受吗?
-
当然,我更新了我的答案...
标签: asp.net-web-api routes asp.net-web-api-routing attributerouting