Asp.net web api 如何在ASP.NET WebApi中修改HttpRequestMessage的表单数据内容

Asp.net web api 如何在ASP.NET WebApi中修改HttpRequestMessage的表单数据内容,asp.net-web-api,Asp.net Web Api,是否可以在筛选器或HttpMessageHandler中修改HttpRequestMessage的表单数据内容 我想从查询字符串中读取一个值,并根据某些逻辑,我想在HttpRequestMessage中传递的表单数据到达控制器上的操作方法之前更新其内容,这样我仍然可以依赖内置的模型绑定并检查ModelState.IsValid()方法 这可能吗?我不相信请求内容可以修改,因为它是一个“一次读取”流。您正在对内容进行何种更改?将在查询字符串中传递一个API密钥。通过这个键,我可以生成一个用户id(

是否可以在筛选器或
HttpMessageHandler
中修改
HttpRequestMessage
的表单数据内容

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


这可能吗?

我不相信请求内容可以修改,因为它是一个“一次读取”流。您正在对内容进行何种更改?

将在查询字符串中传递一个API密钥。通过这个键,我可以生成一个用户id(我希望调用者知道他们的API键,但不知道他们的实际用户id)。我想将该用户id放入表单数据中,该表单数据将成为对象的一部分,该对象将被模型绑定到action方法参数。在我的实验中,我注意到请求内容是一个“一次读取”流,因此我不太可能走这条路。你能想出另一种方法来实现这一点吗?最好不用我更改所有的操作方法。你可以将数据放在请求属性中(请参见此处:)。如果您根本没有将用户信息作为模型的一部分,该怎么办?请求属性似乎是一种可能性。明天我会试试,谢谢你的提示。最后我不得不从模型中取出用户ID。在authenticate过滤器中,我使用ApiKey检索真实的UserId,并将其存储在控制器的属性中。在我的每个操作方法中,我都访问了控制器的UserId属性。我不希望在我的每一个动作方法中都使用这一行代码,但似乎没有一个好的选择。无论如何,谢谢你的帮助。