【问题标题】:Get access to the request (HttpRequestMessage) in a WebAPI constructor在 WebAPI 构造函数中访问请求 (HttpRequestMessage)
【发布时间】:2018-09-27 20:12:43
【问题描述】:

我需要在 ApiController 的构造函数中访问请求(HttpRequestMessage 类型)。不幸的是,在对象创建的这个阶段,Request 属性尚未初始化,并且 HttpContext.Current.Request 包含“旧”类格式 (HttpRequest) 的请求。

有没有办法在控制器构建期间访问 HttpRequestMessage ?

谢谢。

【问题讨论】:

  • 您是否尝试为所有操作执行通用逻辑?如果是这种情况,Action 过滤器更适合。
  • 没有。我想从 http 标头中提取信息来初始化我的控制器的一些属性。
  • 你能提供一个你想要完成的例子吗,可能有更好的方法吗?
  • @mberube.Net 您找到解决方案了吗?我有同样的问题。
  • @Mike Sheehan:不,不幸的是,我不得不改变我的设计。如果有人为未来的项目找到解决方案,我会很高兴。

标签: c# asp.net-web-api


【解决方案1】:

虽然您无法在构造函数中访问 Http 请求,但可以使用 Initialize method 访问它。下面是通过该方法访问 Http Request 对象的代码

protected override void Initialize(HttpControllerContext controllerContext)
{
   var request = controllerContext.Request;

   base.Initialize(controllerContext);
}

我遇到了一种情况,即在调用任何函数之前我需要 JWT 令牌,而这个解决方案对我来说效果很好。

注意:确保包含base.Initialize(controllerContext); 以避免运行时错误。

【讨论】:

  • 我试图访问我的控制器的构造函数中的请求属性之一。有了这个技巧,我可以在 Initialize 方法的覆盖中访问该属性,一切都很好。
猜你喜欢
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 2018-06-25
  • 2023-04-02
相关资源
最近更新 更多