7

最新のブラウザ(Chrome 10、Firefox 4、IE9)はすべて、UserAgent識別子を短縮しています。その結果、サポートされている.NETバージョンはサーバーに送信されなくなります。

お客様がClickOnceアプリケーションを使用できるようにするには、クライアントがサポートしているフレームワークを知る必要があります。

ChromeおよびFirefoxClickOnceヘルパーのJavascript検出は開始です(これらはFirefox 4では失敗します)が、クライアントに.NET 2.0、3.5、または4.0がインストールされているかどうかを検出する方法がなくなりました。

UserAgent文字列からWindowsプラットフォームを検出し、最も可能性の高いフレームワーク(XP = 1.1、Vista = 2.0、Win7 = 3.5)を推測することを除けば、.NETフレームワークのサポートをどのように検出できますか?

(ほとんどのクライアントはダウンロードの「ポップアンダー」に気付かないようであるため、.applicationファイルのダウンロードを防止したいと考えています)

4

4 に答える 4

4

navigator.userAgent は、少なくとも IE9 では拡張 UA 文字列を提供します

于 2011-04-18T09:02:06.047 に答える
2

この問題はMicrosoft によって修正されました。.NET バージョンは、HTTP 要求ヘッダー「X-ClickOnceSupport」として返されるようになりました。

PHP では、getenv() を介してこれを取得します。

print getenv('HTTP_X_CLICKONCESUPPORT');

パールで

print $ENV{HTTP_X_CLICKONCESUPPORT};

JavaScript では、この回答によると、それは不可能です。

(これはすべて、Firefox .NET アシスタントのコードを調べることから始まり、「X-ClickOnceSupport」ヘッダーを検索するようになりました。謎を解決するためにソース コードを表示できるようなものはありません!)

于 2011-09-26T21:00:54.123 に答える
1

この問題を回避する方法は、ブラウザーに互換性を保つように指示する応答ヘッダーを送り返し、navigator.userAgent で JavaScript を使用してフレームワークのバージョンを検出することでした。

ページの分離コード:

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);
于 2011-11-01T20:05:25.537 に答える
1

これを行う方法がわかりません。ブラウザがどのフレームワークがインストールされているかをサーバーに通知しない場合、他の方法で確認することはできません。

于 2011-04-12T14:51:40.143 に答える