В вашем Invoke
методе промежуточного программного обеспечения для обработки исключений в качестве аргумента используется текущий HttpContext
. Зная это, вы можете получить доступ к свойству удостоверения контекста.
public async Task Invoke(HttpContext context)
{
try
{
await this.next(context);
}
catch (Exception e)
{
var username = context.User?.Identity?.Name ?? "__unknown";
using (LogContext.PushProperty("Username", username))
{
this.logger.Log(......)
}
}
}
Таким образом, у вас будет доступ к зарегистрированному пользователю, даже если промежуточное программное обеспечение исключения будет первым в конвейере, если исключение произошло после промежуточное программное обеспечение для аутентификации.
РЕДАКТИРОВАТЬ 02/10/2020
Если вам нужна идентификационная информация в .UseSerilogRequestLogging()
, вы можете использовать опции перегрузки, которые принимают опции. Проверьте последний пример в Регистрация запросов на их странице github.