全部,
我正在尝试通过 Web API 修改传入对象的有效负载。目前我正在使用一个自定义格式化程序,它继承JsonMediaTypeFormatter
并覆盖了相关方法。
看起来像这样:
public override async Task<object> ReadFromStreamAsync(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger,
CancellationToken cancellationToken)
{
object obj = await base.ReadFromStreamAsync(type, readStream, content, formatterLogger, cancellationToken);
TrySetEventNo(obj, GetEventNo());
return obj;
}
private void TrySetEventNo(object content, long eventNo)
{
if (content is EventModelBase)
{
EventModelBase eventBase = (EventModelBase)content;
eventBase.EventNo = eventNo;
}
}
我正在使用它来跟踪通过 API 传入的每个对象。
在这一切发生之前,我有一个 MessageHandler,它正在创建一个事件编号并将其添加到Request.Properties
.
尝试在之前在 MessageHandler 中创建的格式化程序中获取事件编号被证明是困难的。访问HttpContext.Current.Items["MS_HttpRequestMessage"].Properties
似乎是一个不同的请求,因为它不包含事件编号。
我有两个问题:
- 我这样做是正确的还是有更好的方法?
- 如果我采用正确的方法,如何获得正确的请求以提取事件编号?
谢谢