[ ASP.NET ] ブラウザ情報の取得 ( User-Agent / ブラウザ定義ファイル )

Pocket

ここでは、ASP.NET において Request.Browser からブラウザ定義情報を取得するサンプルコードを掲載しています。サンプルではブラウザがクッキーをサポートしているかどうかを Request.Browser.Cookies より取得していますが、その他多数の情報が取得できます。

スポンサーリンク


VB.NET

    ' User-Agent ヘッダの取得
    Dim userAgent As String = Request.Browser.Capabilities("").ToString()
    'Dim userAgent As String = Request.UserAgent

    ' User-Agent 文字列例
    '--------------------------------------------------------------------------
    ' ie      : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
    ' firefox : Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
    ' chrome  : Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24

    ' ブラウザがクッキーをサポートしているかどうか?
    Dim enableCookie As Boolean = Request.Browser.Cookies

C#

    // User-Agent ヘッダの取得
    string userAgent = Request.Browser.Capabilities[""].ToString();
    'string userAgent = Request.UserAgent;

    // ブラウザがクッキーをサポートしているかどうか?
    bool enableCookie = Request.Browser.Cookies;
ブラウザ定義ファイル

User-Agent の情報だけではブラウザが Cookie をサポートしているかどうかは判断できませんが、結果は返されています。実はこれらの情報は .Net Framework に定義されている情報を返しています。ブラウザ定義ファイルと呼ばれ、以下のディレクトリに配置されています。

ブラウザ定義情報格納ディレクトリ

%SystemRoot%¥Microsoft.NET¥Framework¥(.Net バージョン)¥Config¥Browsers

ディレクトリ内には様々なブラウザの定義ファイルが格納されています。以下は、。NEtFramework4.0 のブラウザ定義ファイルです。拡張子は .browser ですが、中身は XML ファイルです。

ブラウザ定義ファイル一覧

ブラウザ定義ファイル一覧

iphone.browser の中身(抜粋)
    <gateway id="IPhone" parentID="Safari">
        <identification>
            <userAgent match="iPhone" />
        </identification>

        <capabilities>
          <capability name="isMobileDevice"           value="true" />
          <capability name="mobileDeviceManufacturer" value="Apple" />
          <capability name="mobileDeviceModel"        value="IPhone" />
          <capability name="canInitiateVoiceCall"     value="true" />
        </capabilities>
    </gateway>
ブラウザ情報が正しく表示されない場合

例えば、Request.Browser.Browser でブラウザ名が取得できますが、FireFox で接続しているにも関わらず IE が返されるような場合は、ブラウザ定義情報が正しく読み込まれていない可能性があります。そのような場合は、App_Browsers ディレクトリ を手動で追加し、ブラウザ定義情報格納ディレクトリのファイルを追加した App_Browsers ディレクトリにコピーした上でリビルドすると、ブラウザ定義情報が正しく取得できるようになると思います。

App_Browsers ディレクトリの追加手順

[ 追加 ] ― [ ASP.NET フォルダの追加 ] ― [ App_Browsers ]

実際に、この方法で正しく読み込まれるようになりました

 

参考

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *