Есть ли ошибка в интерпретации User-Agent ASP.NET для пользовательских сборок Firefox? - PullRequest
2 голосов
/ 03 февраля 2010

Для строки агента пользователя

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 возвращает 3 и HttpContext.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 возвращает 1 и HttpContext.Current.Request.Browser.MinorVersion возвращает 9. Похоже, ASP.NET выбрал числа из информации тега CVS, а не из версии браузера.

Означает ли это, что синтаксический анализ пользовательского агента ASP.NET не работает?

1 Ответ

1 голос
/ 03 февраля 2010

Кажется, вам нужно настроить файл 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]*))"
...