【问题标题】:How to modify the form-data contents of an HttpRequestMessage in the ASP.NET WebApi如何在 ASP.NET WebApi 中修改 HttpRequestMessage 的表单数据内容
【发布时间】:2012-09-08 20:42:31
【问题描述】:

是否可以在过滤器或HttpMessageHandler修改HttpRequestMessage 的表单数据内容。

我想从查询字符串中读取一个值并依赖于某些逻辑我想在HttpRequestMessage 中传递的表单数据的内容在它到达控制器上的操作方法之前更新,这样我仍然可以依赖在内置模型绑定上并检查ModelState.IsValid() 方法。

这可能吗?

【问题讨论】:

    标签: asp.net-web-api


    【解决方案1】:

    我不相信请求内容可以修改,因为它是“一次读取”流。您对内容进行了哪些更改?

    【讨论】:

    • 一个 API 密钥将在查询字符串中传递。从这个密钥我可以生成一个用户 ID(我希望调用者知道他们的 API 密钥,但不知道他们的实际用户 ID)。我想将该用户 ID 放在表单数据中,该数据将成为模型绑定到操作方法参数的对象的一部分。在我的实验中,我注意到请求内容是“一次读取”流,因此我看起来不太可能走这条路。你能想出另一种方法来解决这个问题吗,最好不用我改变我所有的操作方法。
    • 您可以将数据放在请求属性中(参见此处:stackoverflow.com/questions/12239216/…)。如果您根本不将用户信息作为模型的一部分怎么办?
    • 请求属性似乎是一种可能性。我明天试试,谢谢你的提示。
    • 最后我不得不从模型中取出 UserId。在身份验证过滤器中,我使用 ApiKey 检索真实的 UserId 并将其存储在控制器的属性中。在我的每个操作方法中,我访问了控制器的 UserId 属性。我希望不必在我的每个操作方法中使用那行代码,但似乎没有一个好的选择。无论如何,谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    相关资源
    最近更新 更多