すべて、Web APIはフォーマッタで受信ペイロードを変更します
Web API経由で着信オブジェクトのペイロードを変更しようとしています。現在私はJsonMediaTypeFormatter
から継承し、関連するメソッドをオーバーライドするカスタムフォーマッタを使用しています。
は次のようになります。私は、APIを介して来るすべてのオブジェクトを追跡するために、これを使用してい
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;
}
}
。
このようなことが起こる前に、私はイベント番号を作成してそれをRequest.Properties
に追加しているMessageHandlerを持っています。
以前にMessageHandlerで作成されたフォーマッタのイベント番号を取得しようとするのは困難です。アクセス番号HttpContext.Current.Items["MS_HttpRequestMessage"].Properties
は、イベント番号が含まれていないため、別の要求のようです。
私は2つの質問がきました:
- は、私はこれを正しくやっているか良い方法はありますか?
- 正しいアプローチをとっている場合、正しい番号を取得するためのリクエストを取得する方法は?
おかげ