我有以下场景:
作为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,但它是只读的.
有谁知道如何解决它?
我需要解析非常大的日志文件(> 1Gb,<5Gb) - 实际上我需要将数据剥离到对象中,以便将它们存储在数据库中.日志文件是顺序的(没有换行符),如:
TIMESTAMP = 200901.01亿; PARAM1 = Value11; PARAM2 = Value21;参数3 = Value31; TIMESTAMP = 20090101000100; PARAM1 = Value11; PARAM2 = Value21;参数3 = Value31; TIMESTAMP = 20090101000152; PARAM1 = Value11; PARAM2 = Value21;参数3 = Value31; .. .
我需要将其删除到表中:
TIMESTAMP | PARAM1 | PARAM2 | 参数3
该过程需要尽可能快.我正在考虑使用Perl,但任何使用C/C++的建议都会非常受欢迎.有任何想法吗?
最好的祝福,
亚瑟