IIS中的用户代理值和我的日志文件是不同的

时间:2015-08-25 11:39:56

标签: c# asp.net-web-api web wcf-web-api

我想在我的日志文件中记录用户代理信息。所以我使用了这段代码:

System.Web.HttpContext.Current.Request.UserAgent;

当我使用浏览器使用我的Web服务(用户代理返回正确的值)时,它工作正常,但有时上面的代码不起作用。 例如,当我使用WCF测试客户端时,用户代理字符串在我的日志文件中为空,但在IIS日志文件中具有此值:Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+Protocol+4.0.30319.34003)

我也试过这些代码:

    OperationContext context = OperationContext.Current;
HttpRequestMessageProperty httpRequest =
      context.IncomingMessageProperties["httpRequest"] as HttpRequestMessageProperty;
if (httpRequest != null)
{    
  string userAgentInfo = httpRequest.Headers["User-Agent"];
}  

string userAgent = WebOperationContext.Current.IncomingRequest.Headers["User-Agent"];

我想我在这里想念一些东西,但我现在不知道。如果您能帮助我在日志文件中记录完整的用户代理信息,我真的很感激。谢谢。

1 个答案:

答案 0 :(得分:1)

它是一个巨大的混乱而不是可以轻易解码的东西。

由于网络早期的一些脚本曾用于浏览浏览器版本并拒绝不兼容的网站,许多浏览器开始报告疯狂的东西只是为了解决它。 Netscape声称是IE浏览器,我认为IE声称是网景,而且它一切都很混乱。此外,它可以在该字符串中发送您想要的任何内容,因此即使字符串确实有意义,也不能保证它是正确的。