【问题标题】:ASP.NET Web API read model inside action filter动作过滤器中的 ASP.NET Web API 读取模型
【发布时间】:2014-09-03 14:13:27
【问题描述】:

当我需要从动作过滤器 (AuthorizationFilterAttribute) 内的请求正文(或模型)中获取一些数据时,我有一个特殊情况。我找到了这种方式:

public async override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
    var model = await actionContext.Request.Content.ReadAsAsync<XYZ>();
    var valueINeed = model.Something;
    etc...
}

这工作正常,但不幸的是,在调用 ReadAsAsync 后,一旦无法再次读取模型(我猜 ReadAsAsync 在下划线流中移动位置)。因为它无法再次读取模型,所以不要将其纳入控制器操作:

public async Task<HttpResponseMessage> Put([FromBody]XYZ order)
{
    // order is null here
}

任何想法如何阅读动作过滤器中的模型或如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

    在 Web API 中,响应正文是只读流。所以一旦你读了它,你就不能再读它了。

    考虑在查询参数或some other parameter 中传递something,而不是正文。

    【讨论】:

      猜你喜欢
      • 2013-08-22
      • 2014-07-18
      • 2021-10-07
      • 1970-01-01
      • 2012-10-10
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多