.NET 6 HTTPLOGGINGEGINGEDYBODY всегда пусто в журналеC#

Место общения программистов C#
Ответить
Anonymous
 .NET 6 HTTPLOGGINGEGINGEDYBODY всегда пусто в журнале

Сообщение Anonymous »

Я использую httplogging для регистрации запросов в мои конечные точки. Я хотел бы зарегистрировать весь запрос. Я настраиваю httplogging in program.cs < /p>

Код: Выделить всё

builder.Services.AddHttpLogging(logging =>
{
logging.LoggingFields = HttpLoggingFields.All;
});

var app = builder.Build();

// Configure the HTTP request pipeline.

app.UseHttpLogging();
< /code>
и изменение уровня журнала в Appsettings.development.json < /p>
 "Microsoft.AspNetCore": "Information"
Затем, когда я отправляю запрос от почтальона или сгиба, я вижу всю необходимую информацию, но запрашиваемое тело - это всегда пусто (около конца журнала)
info: Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware[1]
Request:
Protocol: HTTP/1.1
Method: POST
Scheme: https
PathBase:
Path: /WeatherForecast
Accept: */*
Connection: keep-alive
Host: localhost:7269
User-Agent: PostmanRuntime/7.29.0
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Content-Length: 60
Postman-Token: [Redacted]
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'WebApplication1.Controllers.WeatherForecastController.Post (WebApplication1)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "Post", controller = "WeatherForecast"}. Executing controller action with signature System.Collections.Generic.IEnumerable`1[WebApplication1.WeatherForecast] Post() on controller WebApplication1.Controllers.WeatherForecastController (WebApplication1).
info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
Executing ObjectResult, writing value of type 'WebApplication1.WeatherForecast[]'.
info: Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware[2]
Response:
StatusCode: 200
Content-Type: application/json; charset=utf-8
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
Executed action WebApplication1.Controllers.WeatherForecastController.Post (WebApplication1) in 8.0904ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'WebApplication1.Controllers.WeatherForecastController.Post (WebApplication1)'
info: Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware[3]
RequestBody: //
Однако я знаю, что тело есть, потому что, когда я пытаюсь прочитать тело в контроллере и останавливаться на точке останова, я вижу, что тело загружается в переменную. < /p>
using var reader = new StreamReader(HttpContext.Request.Body);
var myBody = await reader.ReadToEndAsync(); // {"username": "josef","password": "MyPassword"}
< /code>
Существует пример Curl -запроса, сгенерированный от почты. < /p>
curl --location --request POST 'https://localhost:7269/WeatherForecast' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "josef",
"password": "MyPassword"
}'
< /code>
Я не знаю, есть ли шаг, который я пропустил или что -то в этом роде. Я пытался изменить различные уровни журнала, разные типы запросов, тела и типы телосложения. Запрос всегда пуст в журнале. Я не понимаю, почему он должен регистрироваться только тогда, когда я вручную читаю тело.

Подробнее здесь: https://stackoverflow.com/questions/715 ... pty-in-log
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»