Ich versuche, eine zusätzliche Protokollierung in mein WebAPI-System einzubauen. Mit den Lebenszyklusinformationen für IIS-Anforderungen konnte ich Code mithilfe von Application_BeginRequest und Application_EndRequest in Global.asax.cs protokollieren.Übergeben von Informationen zwischen WebApiApplication und ApiController
Es gibt jedoch Aktionen innerhalb einer Anfrage (zB: Datenbankaktivität), die innerhalb meiner ApiControllers passieren, die ich auch protokollieren möchte.
In der BeginRequest kann ich auf die HttpContext.Items zugreifen, um Informationen zu speichern, die in EndRequest abgerufen werden sollen. Dies scheint jedoch in einem ApiController nicht verfügbar zu sein.
Ich habe versucht, das Request.Headers-Objekt dazu zu verwenden. Aber ich denke, da einer eine HttpRequest und der andere HttpRequestMessage ist, teilen sie keinen gemeinsamen Speicherort.
Ich dachte, ein Sammelobjekt in Global statisch zu machen, und Informationen auf diese Weise zu speichern. Aber da es statisch ist, würde eine gegenseitige Befruchtung zwischen Anfragen nicht möglich sein?
** EDIT: versuchte dies und bestätigte, werden statische Daten zwischen den Anfragen geteilt
Es ist möglich, einen externen Datenspeicher zu verwenden, um dies zu tun, aber scheint, wie diese in der Lage sein sollten Recht innerhalb von IIS ausgeführt werden. Jede Richtung würde geschätzt werden.