2

对于用户代理字符串

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)

HttpContext.Current.Request.Browser.MajorVersion返回3HttpContext.Current.Request.Browser.MinorVersion返回5。到现在为止还挺好。

但是对于这个用户代理字符串(我的一个用户在野外看到)

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 (CK-Finbu.com) Firefox/3.6 (.NET CLR 3.5.30729)

HttpContext.Current.Request.Browser.MajorVersion返回1HttpContext.Current.Request.Browser.MinorVersion返回9。看起来 ASP.NET 从 CVS 标记信息而不是浏览器版本中获取了数字。

这是否意味着 ASP.NET 的用户代理解析被破坏了?

4

1 回答 1

1

似乎您需要调整mozilla.browser文件(在%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\文件夹中)。

在第 188 行附近,您将看到以下内容(匹配 Firefox 浏览器的正则表达式):

"Gecko\/\d+ Firefox\/(?'version'(?'major'\d+)(?'minor'\.[.\d]*))"

应该

"Gecko\/\d+(?: \S+)? Firefox\/(?'version'(?'major'\d+)(?'minor'\.[.\d]*))"
于 2010-02-03T11:59:48.017 回答