2016-11-21 2 views
2

Я использовал «NLog.Extensions.Logging» для входа в систему и должен регистрировать идентификатор пользователя и обнаружил, что это возможно с помощью «NLog.Web.AspNetCore». Файл «nlog.config» настроен для регистрации «aspnet-user-identity». Однако, когда я смотрю журналы, часть идентификатора пользователя всегда является пустой строкой, другие столбцы выглядят довольно хорошо. Я что-то упускаю?Net Core NLog.Web «aspnet-user-identity» пуст?

Часть моего файла конфигурации здесь:

<extensions> 
    <assembly="NLog.Web.AspNetCore" /> 
</extensions> 

<parameter name="@identity" layout="${aspnet-user-identity}"/> 

<logger name="*" minlevel="Trace" appendTo="database"/> 

И команда вставки вставить журнал в БД с параметром «@identity», но это всегда пусто, как я сказал.

+1

Если бы вы назвали 'app.AddNLogWeb();' в startup.cs? См. Https://github.com/NLog/NLog.web – Julian

+0

Да, я вызвал метод @Julian, забыл добавить его к моему вопросу. – kizilsu

+0

Используется 'context.User.Identity.Name', где' context' является 'GetService ()'. Не могли бы вы проверить, работает ли это еще? – Julian

ответ

2

Я думаю, что я нашел этот вопрос,

Было в разрывных изменениях, Служба IHttpContextAccessor не зарегистрирована по умолчанию больше. (See announcement)

Так что добавьте в вашем startup.cs:

public void ConfigureServices(IServiceCollection Services) 
{ 
    //call this in case you need aspnet-user-authtype/aspnet-user-identity 
    services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 
} 
+0

Спасибо @Julian! В этом была проблема :) – kizilsu

+0

Мне нужно было использовать 'services.AddSingleton ();' потому что 'IHttpContextAccessor' был неоднозначным между NLog.Web и Microsoft.AspNetCore.Http. Но это решило :-) – ArieKanarie