log4net WCF获取Windows用户名

时间:2019-03-05 12:23:01

标签: wcf log4net

我已经设置了log4net并正在使用WCF服务的数据库记录器。如果在每种方法中都包含以下内容,则会记录(调用者的)正确的Windows用户名:

ThreadContext.Properties("user") = Thread.CurrentPrincipal.Identity.Name

如果我使用OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name,我还将针对日志条目获取正确的用户名。

我试图通过在服务类构造函数中的GlobalContext级别进行设置来消除对每个方法进行设置的要求,如下所示:

Public Sub New() GlobalContext.Properties("user") = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name log4net.Config.XmlConfigurator.Configure() End Sub

但是,这似乎不能始终如一地工作,有时日志条目具有调用者的Windows用户名,而其他时候则是Web服务器的计算机帐户(DOMAIN \ server $)。这是log4net问题还是WCF?构建WCF服务时,如何强制记录调用方Windows用户名?

0 个答案:

没有答案