У меня есть контроллер, работающий на ASP.NET Core 1.0 RC2, и я бы хотел сбросить необработанные данные POST в телеметрию, поскольку ApplicationInsights не делает этого для вас. Мой код выглядит так:Получение данных POST при использовании [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();
}
Но строка «тело» всегда появляется пустой. Если я удалю декор [FromBody] из сигнатуры функции, тогда этот код работает, но объект RequestData содержит только нуль, чего я не хочу.
Единственное, о чем я могу думать, это преобразовать RequestData обратно в строку Json, но это кажется неуклюжим и медленным.
(EDIT: данные POST является Json)
Я в такой же ситуации, как и вы. Можете ли вы опубликовать свое исправление? – mituw16
Как упоминалось в Tratchers ниже, я использовал EnableRewind 'app.Use ((context, next) => {context.Request.EnableRewind(); return next();});' –
Я вижу .. Может быть стоит добавить, что на ваш вопрос, так как его ответ о «BufferBody», а бит «Включить перемотку» - только в комментариях. Я сделаю это. Благодаря! – mituw16