Ho un controller in esecuzione su ASP.NET Core 1.0 RC2 e mi piacerebbe scaricare i dati POST non elaborati in telemetria poiché ApplicationInsights non fa questo per voi. Il mio codice assomiglia a questoAcquisizione di dati POST non elaborati quando si utilizza [FromBody]
[HttpPost]
[Produces("application/json")]
public IActionResult Post([FromBody] RequestClass RequestData)
{
var stream = this.HttpContext.Request.Body;
stream.Position = 0;
using (var reader = new StreamReader(stream))
{
string body = reader.ReadToEnd();
Telemetry.TrackTrace(body, Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Information);
}
return Ok();
}
Ma la stringa "corpo" viene sempre vuota. Se rimuovo la decorazione [FromBody] dalla firma della funzione, allora questo codice funziona, ma l'oggetto RequestData contiene solo null, che non è quello che voglio.
L'unica cosa che riesco a pensare è la conversione di RequestData su una stringa Json, ma questo sembra goffo e lento.
(EDIT: i dati POST è JSON)
Sono in una situazione simile a quella che eravate. Puoi pubblicare quale è stata la tua correzione? – mituw16
Come accennato nella risposta Tratcher di seguito, ho utilizzato EnableRewind 'app.Use ((contesto, next) => {context.Request.EnableRewind(); return next();});' –
Vedo .. Potrebbe essere vale la pena di aggiungerlo alla tua domanda in quanto la sua risposta riguarda "BufferBody" e il bit di riavvolgimento Enable è solo nei commenti. Darò un colpo. Grazie! – mituw16