Tous,L'API Web modifie la charge utile entrante dans le formateur
J'essaie de modifier la charge utile d'un objet entrant via l'API Web. Actuellement, j'utilise un formateur personnalisé qui hérite de JsonMediaTypeFormatter
et remplace les méthodes appropriées.
ressemble à ceci:
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;
}
}
J'utilise ceci pour suivre chaque objet qui passe par l'API.
Avant tout cela, j'ai un MessageHandler qui crée un numéro d'événement et l'ajoute à Request.Properties
.
L'obtention du numéro d'événement dans le formateur créé précédemment dans MessageHandler s'avère difficile. L'accès HttpContext.Current.Items["MS_HttpRequestMessage"].Properties
semble être une requête différente car il ne contient pas le numéro de l'événement.
J'ai deux questions:
- Est-ce que je fais cela correctement le ou est-il une meilleure façon?
- Si je prends la bonne approche, comment obtenir la bonne demande pour extraire le numéro de l'événement?
Merci