全て、
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
イベント番号が含まれていないため、アクセスは別のリクエストのようです。
2 つの質問があります。
- 私はこれを正しく行っていますか、それともより良い方法がありますか?
- 正しいアプローチを取っている場合、イベント番号を抽出するための正しいリクエストを取得するにはどうすればよいですか?
ありがとう