0
我試圖通過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
似乎是一個不同的請求,因爲它不包含事件編號。
我兩個問題:
- 我這樣做的正確或是否有更好的辦法?
- 如果我採取了正確的方法,如何獲得正確的請求來提取事件編號?
感謝