Обнаружение версии .NET без строки UserAgent - PullRequest
7 голосов
/ 12 апреля 2011

Большинство современных браузеров (Chrome 10, Firefox 4, IE9) все сокращают свои идентификаторы UserAgent. В результате поддерживаемые версии .NET больше не отправляются на сервер.

Чтобы наши клиенты могли использовать наше приложение ClickOnce, нам необходимо знать, какие платформы поддерживает клиент.

Обнаружение Javascript помощников Chrome и Firefox ClickOnce - это начало (теперь они не работают в Firefox 4), но у нас больше нет способа определить, установлен ли на клиенте .NET 2.0, 3.5 или 4.0.

Запрет на обнаружение платформы Windows по строке UserAgent и вывод наиболее вероятного фреймворка (XP = 1.1, Vista = 2.0, Win7 = 3.5), как мы можем обнаружить поддержку .NET framework?

(Мы хотим предотвратить загрузку файла .application, так как большинство наших клиентов, похоже, не замечают загрузочные всплывающие окна)

Ответы [ 4 ]

4 голосов
/ 18 апреля 2011

navigator.userAgent выдает вам расширенную строку UA по крайней мере в IE9

2 голосов
/ 27 сентября 2011

Эта проблема была исправлена ​​Microsoft .Версия .NET теперь возвращается в виде заголовка HTTP-запроса «X-ClickOnceSupport».

В PHP вы можете получить это через getenv ()

print getenv('HTTP_X_CLICKONCESUPPORT');

В Perl

print $ENV{HTTP_X_CLICKONCESUPPORT};

В JavaScript это невозможно, согласно thisответ .

(Все началось с изучения кода Firefox .NET Assistant, который привел меня к поиску заголовка «X-ClickOnceSupport». Ничего подобного возможности просмотра исходного кодаразгадать тайну!)

1 голос
/ 02 ноября 2011

Я обошел эту проблему, отправив обратно заголовок ответа, сообщающий браузеру о совместимости, а затем определил версию платформы с помощью javascript на navigator.userAgent.

Код страницы позади:

Response.Headers.Add("X-UA-Compatible", "IE=7");

Javascript на странице

// js to detect .net 3.5
// if it evaluates to true, then the user has .NET 3.5 installed
alert(navigator.userAgent.search(/\.NET.*?3\.5[\.\da-z]*?;/i) > -1);
1 голос
/ 12 апреля 2011

Я не вижу способа сделать это.Если браузер не сообщает вашему серверу, какие фреймворки установлены, у вас нет другого способа узнать.

...