NLog: зарегистрировать пользователя, который вызвал приложение, в приложении WCF в IIS

У меня следующий сценарий:

  • Развернутая служба WCF работает как служба, размещенная в Windows. Эта служба WCF используется для регистрации определенных событий в базе данных (NLog v2). Эта служба использует basicHttpBinding.

  • Развернутое веб-приложение (другой сервер) под IIS. Пул приложений работает под учетными данными NETWORK SERVICE. Аутентификация веб-приложения интегрирована в Windows (учетные данные Active Directory).

Всякий раз, когда я вызываю WCF из консольного приложения, я могу получить идентификатор пользователя из System.Threading.Thread.CurrentPrincipal.Identity.Name ; когда я вызываю его из веб-приложения, я ожидаю получить «DOMAIN \ SERVER $» в качестве имени идентификатора потока (которое происходит, как ожидалось).

Моя проблема: я хотел бы получить пользователя, который вызвал веб-приложение. Я' Мы уже пытались установить атрибут AspNetCompatibilityRequirements в контракте службы WCF, но $ {asp-application} , $ {aspnet-user-identity} и Параметры $ {asp-request} в NLog читаются как null . HttpContext в веб-приложении в порядке, но он не отправляется в WCF. В классе NLog.Logger есть свойство Credentials , но оно доступно только для чтения.

Кто-нибудь знает, как его решить?

6
задан Julian 5 September 2016 в 23:25
поделиться