NLog:在IIS中的WCF应用程序中记录调用该应用程序的用户

cas*_*als 6 .net iis wcf logging nlog

我有以下场景:

  • 作为Windows托管服务运行的已部署WCF服务.此WCF服务用于将特定事件记录到数据库(NLog v2).此服务使用basicHttpBinding.

  • IIS下部署的Web应用程序(不同的服务器).应用程序池在NETWORK SERVICE凭据下运行.Web应用程序身份验证是Windows集成的(Active Directory凭据).

每当我从控制台应用程序调用WCF时,我都可以从中获取用户身份System.Threading.Thread.CurrentPrincipal.Identity.Name; 当我从Web应用程序调用它时,我希望得到"DOMAIN\SERVER$"线程标识名称(按预期发生).

我的问题是:我想让调用Web应用程序的用户.我已经尝试设置AspNetCompatibilityRequirements在WCF服务合同的属性,但是 ${asp-application},${aspnet-user-identity}${asp-request}在NLOG参数读作null.在HttpContextWeb应用程序中是正常的,但它没有被发送到WCF.课堂上有一个Credentials属性NLog.Logger,但它是只读的.

有谁知道如何解决它?

ado*_*ntz 0

可能,您需要设置impersonateCallerForAllOperations属性

有关详细信息,请参阅 MSDN:http://msdn.microsoft.com/en-us/library/ms731306.aspx