调试MVC应用程序时奇怪的用户代理

时间:2015-07-27 14:16:53

标签: asp.net-mvc-4 c#-4.0 internet-explorer-11 user-agent

我找不到任何关于这种神秘行为的相关帖子,如果有明显的答案,请原谅我。

我正在各种浏览器中测试应用程序,IE 11有一些奇怪的行为。

当我访问一个告诉我我的用户代理的网站时:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

这是IE11的标准。

但是,当我运行我的应用程序时,用户代理仅在IE11上有所不同。 我尝试通过添加Global.asax来调试IE11上的应用程序:

  protected void Application_BeginRequest()
  {
      var ua1 = Request.Headers["User-Agent"];
      var ua2 = Request.UserAgent;
  }

他们两人都表示:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)

Chrome在两种情况下都显示相同,但​​IE 11显示不同的用户代理,具体取决于我是否在我的应用程序或任何其他选项卡中。因此,我的应用程序似乎以某种方式影响用户代理,但仅在使用IE11查看时才会影响用户代理。

有人可以解释一下并告诉我如何通过我的应用程序获得相同的用户代理吗?知道为什么会这样吗?

理想情况下,我希望在调试时获取预期的用户代理:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

1 个答案:

答案 0 :(得分:0)

您是否有机会打开F12开发人员工具窗口并将浏览器仿真设置为IE7,或将用户代理欺骗设置为Internet Explorer 7?

您可以在该工具的var txtFiles = Directory.GetFiles(@"E:\PROJ\replaceY\replaceY\", "*.txt"); foreach (string currentFile in txtFiles) { using (StreamReader sr = new StreamReader(currentFile)) { string input = sr.ReadToEnd(); string pattern = "(?<=^.{4,4})."; string replacement = "h"; Regex rgx = new Regex(pattern, RegexOptions.Multiline); string result = rgx.Replace(input, replacement); using (StreamWriter outfile = new StreamWriter(currentFile, append)) { outfile.Write(result); } } } 标签中找到它。

或者,如果未设置,请检查IE是否在“兼容模式”下运行 - 因为它可能设置为Intranet站点执行此操作。如果是这样,这个问题可能与以下内容重复:

IE11 User-Agent - Wrong one when pointing towards localhost - Right one when going towards my PC name?

还有:

IE 11 sends different User-Agent header to different subdomains