Schema der Browserdefinitionsdatei (browsers-Element)

Aktualisiert: November 2007

Browserdefinitionsdateien enthalten Definitionen für einzelne Browser. ASP.NET bestimmt zur Laufzeit mithilfe der Informationen im Anforderungsheader, welcher Browsertyp die Anforderung gestellt hat. Dann bestimmt ASP.NET mithilfe von BROWSER-Dateien die Funktionen des Browsers und wie Markup in diesem Browser wiedergegeben wird. Dies unterstützt Webentwickler beim Erstellen von Anwendungen, die auf mobilen Geräten angezeigt werden können. Dabei werden Steuerelementadapter verwendet, die je nach Typ des Geräts das Verhalten eines ASP.NET-Webserver-Steuerelements anpassen. Weitere Informationen finden Sie unter den Verknüpfungen im Abschnitt Siehe auch.

Tipp

Browserdefinitionsdateien wurden in .NET Framework, Version 2.0, eingeführt. In früheren Versionen von .NET Framework wurden mithilfe des browserCaps-Elements Browserdefinitionen in Konfigurationsdateien definiert.

Das browsers-Element verwendet die folgende Struktur.

<browsers>
    <browser id="browser name"
             parentID="parent browser name"
             refID="reference ID">
        <identification>
            <userAgent match="regular expression"
                       nonMatch="regular expression" />
            <header match="regular expression"
                    name="header name"
                    nonMatch="regular expression" />
            <capability match="regular expression"
                        name="capability name"
                        nonMatch="regular expression" />
        </identification>
        <capture>
            <userAgent match="regular expression" />
            <header match="regular expression"
                    name="header name" />
            <capability match="regular expression"
                        name="capability name" />
        </capture>
        <capabilities>
            <capability name="capability name"
                        value="capability value" />
        </capabilities>
        <controlAdapters markupTextWriterType="type name">
            <adapter adapterType="name of adapter class"
                     controlType="name of control class" />
        </controlAdapters>
        <sampleHeaders>
            <header name="header name"
                    value="header value" />
        </sampleHeaders>
    </browser>
    <gateway id="gateway ID"
             parentID="parent browser ID">
        <!-- Same child elements as for <browser>.
        <identification></identification>
        <capture></capture>
        <capabilities></capabilities>
        <controlAdapters></controlAdapters>
        <sampleHeaders></sampleHeaders>
         -->
    </gateway>
    <defaultBrowser id="Default" 
                    parentID="parent browser ID"
                    refID="reference ID" >
        <!-- Same child elements as for <browser>.
        <identification></identification>
        <capture></capture>
        <capabilities></capabilities>
        <controlAdapters></controlAdapters>
        <sampleHeaders></sampleHeaders>
         -->
    </defaultBrowser>
</browsers>

Attribute und Elemente

Element

Beschreibung

adapter

Gibt eine Zuordnung zwischen einem ASP.NET-Webserver-Steuerelement und dem Adapter an, mit dem es im aktuellen Browser wiedergegeben wird. Die folgende Definition für den NokiaMobileBrowserRainbow-Browser in der Datei Nokia.browser gibt z. B. an, dass Menu-Serversteuerelemente mithilfe der MenuAdapter-Steuerelementadapterklasse an den Browser angepasst werden müssen:

    <controlAdapters markupTextWriterType="System.Web.UI.XhtmlTextWriter" >
        <adapter
          controlType="System.Web.UI.WebControls.Menu"
          adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter">
        </adapter>
    </controlAdapters>

In der folgenden Tabelle werden die erforderlichen Attribute im adapter-Element beschrieben.

Attribut

Beschreibung

adapterType

Erforderliches String-Attribut.

Gibt den Namen der Klasse an, mit der geändert wird, wie das Steuerelement an den Browser angepasst wird.

controlType

Erforderliches String-Attribut.

Gibt den Namen des dem Adapter zuzuordnenden Steuerelements an.

Das adapter-Element verfügt über keine untergeordneten Elemente.

browser

Definiert eine einzelne Browserdefinition.

In der folgenden Tabelle werden die Attribute beschrieben, die das browser-Element enthalten kann.

Tipp

Die in ASP.NET enthaltenen Browserdefinitionsdateien sollten nicht geändert werden, da diese Dateien möglicherweise durch Service Packs aktualisiert werden und dabei Ihre Änderungen überschrieben werden. Erstellen Sie stattdessen neue BROWSER-Dateien und verwenden Sie das parentID-Attribut in einer neuen Browserdefinition zum Erben von Einstellungen, oder fügen Sie einer vorhandenen Browserdefinition mithilfe des refID-Attributs Funktionen hinzu.

Eine Browserdefinition muss entweder das refID-Attribut oder das id-Attribut und das parentID-Attribut definieren.

Attribut

Beschreibung

id

String-Attribut, erforderlich bei der Verwendung des parentID-Attributs.

Gibt den eindeutigen Namen für den Browser an, der definiert wird.

parentID

String-Attribut, erforderlich bei der Verwendung des id-Attributs.

Gibt den eindeutigen Namen der übergeordneten Browserdefinition an, von der Einstellungen geerbt werden sollen. Diese Einstellungen können in der aktuellen Browserdefinition überschrieben werden. Die übergeordnete Browserdefinition muss sich nicht in der gleichen Browserdefinitionsdatei befinden, sie muss jedoch in der gleichen Anwendung oder im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG\Browsers definiert sein. Die folgende Definition für den WebTV-Browser ist zum Beispiel in der Datei WebTV.browser definiert. Die Definition für den übergeordneten IE2-Browser ist in der Datei IE.browser im gleichen Verzeichnis definiert.

<browser id="WebTV" parentID="IE2">

refID

String-Attribut, kann nicht verwendet werden, wenn das id-Attribut und das parentID-Attribut verwendet werden.

Gibt einen vorhandenen Browserdefinitionsbezeichner an. Ordnen Sie mithilfe des refID-Attributs einer vorhandenen Browserdefinition neue Funktionen zu. Sie können mehrere Browserknoten so konfigurieren, dass sie auf die gleiche refID verweisen. Wenn das refID-Attribut angegeben ist, kann das browser-Element kein untergeordnetes identification-Element enthalten.

Das refID-Attribut ersetzt nicht das Zielelement. Stattdessen werden seine Einstellungen angewendet, nachdem alle anderen Attributeinstellungen angewendet wurden. Die Reihenfolge, in der die Einstellungen angewendet werden, sieht folgendermaßen aus:

  • alle <gateway parentID>-Knoten

  • alle <gateway refID>-Knoten

  • alle <browser parentID>-Knoten

  • alle <browser refID>-Knoten

In der folgenden Beispieldefinition werden der vorhandenen IE-Browserdefinition in der Datei IE.browser neue Funktionen hinzugefügt.

<browser refID="IE">
    <capabilities>
        <capability name="UseRichTextBox" value="true" />
    </capabilities>
    <controlAdapters>
        <adapter controlType="System.Web.UI.Calendar"
adapterType="ExampleAdapters.ExampleIECalendarAdapter"
        />
    </controlAdapters>
</browser>

Das browser-Element kann 0 (null) oder eines der folgenden untergeordneten Elemente enthalten:

  • capabilities

  • capture

  • controlAdapters

  • identification

  • sampleHeaders

browsers

Stellt das erforderliche Stammelement einer BROWSER-Datei dar.

capabilities

Definiert die für die aktuelle Browserdefinition festzulegenden Funktionswerte. Eine Liste von stark typisierten Browserfunktionen finden Sie unter den Eigenschaften der HttpCapabilitiesBase-Klasse. Die meisten dieser Eigenschaften verwenden die Höckerschreibweise in Browserdefinitionsdateien. Sie können auch eigene Funktionswerte hinzufügen.

Das capabilities-Element enthält keine Attribute.

Das capabilities-Element kann keine oder mehr der folgenden untergeordneten Elemente enthalten:

  • capability

capability (untergeordnetes Element von capabilities)

Definiert einen einzelnen Funktionswert, der für die aktuelle Browserdefinition festgelegt werden muss. Für die IE-Browserdefinition werden zum Beispiel die folgenden Funktionen in der Datei IE.browser definiert. Diese Beispieldefinition erbt andere Funktionen von der Mozilla-Browserdefinition in der Datei Mozilla.browser. Die Werte, die innerhalb der auf ein Dollarzeichen folgenden geschweiften Klammern (${}) Text enthalten, werden im untergeordneten userAgent-Element des identification-Elements "^Mozilla[^(]*\([C|c]ompatible;\s*MSIE (?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))(?'extra'[^)]*)" durch die aufgezeichneten Werte aus dem match-Ausdruck ersetzt.

    <capabilities>
        <capability name="browser"          value="IE" />
        <capability name="extra"            value="${extra}" />
        <capability name="isColor"          value="true" />
        <capability name="letters"          value="${letters}" />
        <capability name="majorversion"     value="${major}" />
        <capability name="minorversion"     value="${minor}" />
        <capability name="screenBitDepth"   value="8" />
        <capability name="type"             value="IE${major}" />
        <capability name="version"          value="${version}" />
    </capabilities>

Das capability-Element enthält die folgenden erforderlichen Attribute.

Attribut

Beschreibung

name

Erforderliches String-Attribut.

Gibt den Namen der Funktion an. Eine Liste von stark typisierten Browserfunktionen finden Sie unter den Eigenschaften der HttpCapabilitiesBase-Klasse. Von den meisten dieser Eigenschaften wird in Browserdefinitionsdateien die Höckerschreibweise verwendet, z. B. canSendMail anstelle von CanSendMail. Sie können auch eigene Funktionswerte hinzufügen.

value

Erforderliches String-Attribut.

Gibt den Wert der Funktion an. Die für die einzelnen stark typisierten Browserfunktionen möglichen Werte sind in den Eigenschaften der HttpCapabilitiesBase-Klasse aufgelistet. Das Wertattribut kann innerhalb von "${}" aufgezeichnete Variablen enthalten.

Das capability-Element verfügt über keine untergeordneten Elemente.

capability (untergeordnetes Element von identification oder capture)

Gibt an, dass der Wert einer Funktion aus der übergeordneten Browserklasse mit einem regulären Ausdruck verglichen werden soll. In der folgenden Definition für den in der Datei IE.browser enthaltenen IE5to9-Browser wird beispielsweise mithilfe eines capability-Elements angegeben, dass die majorversion-Funktionseinstellung der übergeordneten IE-Definition mit dem enthaltenen regulären Ausdruck übereinstimmen muss, damit diese Browserdefinition auf den Browser des Clients abgestimmt wird. Diese Beispielbrowserdefinition umfasst capability-Elemente, die den Elementen in der übergeordneten Definition hinzugefügt werden oder diese überschreiben.

    <browser id="IE5to9" parentID="IE">
        <identification>
            <capability name="majorversion" match="^[5-9]" />
        </identification>
        <!-- Capability elements. -->
    </browser>

In der folgenden Tabelle werden die Attribute beschrieben, die das capability-Element enthält. Es muss entweder das match-Attribut oder das nonMatch-Attribut definiert werden, jedoch nicht beide.

Attribut

Beschreibung

match

String-Attribut, kann nicht im gleichen Element wie das nonMatch-Attribut verwendet werden.

Gibt den regulären Ausdruck an, mit dem die übergeordnete Funktionseinstellung übereinstimmen muss, damit diese Identifikation erfüllt wird. Informationen zum Formatieren von regulären Ausdrücken finden Sie unter Reguläre Ausdrücke von .NET Framework.

name

Erforderliches String-Attribut.

Gibt den Namen der übergeordneten Funktion an.

nonMatch

String-Attribut, kann nicht im gleichen Element wie das match-Attribut verwendet werden. Dieses Attribut wird nicht im untergeordneten capability-Element des capture-Elements verwendet.

Gibt den regulären Ausdruck an, mit dem die übergeordnete Funktionseinstellung nicht übereinstimmen darf, damit diese Identifikation erfüllt wird.

Das capability-Element enthält keine untergeordneten Elemente.

capture

Gibt Informationen dazu an, welche der Elemente header, userAgent und capability zusätzlich zum Aufzeichnen von Browserinformationen verwendet werden sollen. Dies ist hilfreich beim Erkennen von neuen Browsern, die bei der Veröffentlichung von .NET Framework 2.0 noch nicht verfügbar waren. Zum Aufzeichnen von Werten kann eine Browserdefinition Aufzeichnungen von regulären Ausdrücken im match-Attribut eines beliebigen Identifikationselements einschließen. Das folgende in der Datei IE.browser definierte userAgent-Element zeichnet beispielsweise die Höhe des Bildschirms aus dem Anforderungsheader des Benutzer-Agents in Pixel auf.

    <capture>
        <userAgent match="PalmSource; Blazer 3\.0\)\s\d+;(?'screenPixelsHeight'\d+)x(?'screenPixelsWidth'\d+)$" />
    </capture>

Eine Browserdefinition muss möglicherweise zusätzliche Informationen durch Scannen von Anforderungsheadern aufzeichnen, die nicht beim Bestimmen der Browserklasse verwendet werden. Das folgende capture-Element zeichnet beispielsweise die Anzahl von Bildschirmtasten eines OpenWave-Mobiltelefons auf. Bildschirmtasten zeigen Menüs und Befehle an, wenn Sie die entsprechenden Tasten auf Windows-basierten SmartPhones drücken:

    <capture>
        <header name="HTTP_X_UP_DEVCAP_NUMSOFTKEYS" 
                match="(?'softkeys'\d+)" />
    </capture>

Das capture-Element enthält keine Attribute.

Das capture-Element kann keine oder mehrere der folgenden untergeordneten Elemente enthalten:

  • header

  • userAgent

  • capability

controlAdapters

Definiert einen Steuerelementadapter zum Anpassen des Serversteuerelements an den Browser.

In der folgenden Tabelle wird das im controlAdapters -Element enthaltene Attribut beschrieben.

Attribut

Beschreibung

markupTextWriterType

Optionales String-Attribut.

Gibt den .NET Framework-Typ des zu verwendenden Markup-Textwriter an. Der Standardtyp ist System.Web.UI.XhtmlTextWriter. Andere mögliche Werte für dieses Attribut sind System.Web.UI.Html32TextWriter, System.Web.UI.HtmlTextWriter, System.Web.UI.ChtmlTextWriter und alle benutzerdefinierten Klassen, die von einer dieser Klassen abgeleitet sind.

Das controlAdapters-Element kann keine oder mehrere der folgenden untergeordneten Elemente enthalten:

  • adapter

defaultBrowser

Definiert Standardbrowserfunktionen in der Datei Default.browser. Standardbrowserdefinitionen stimmen mit keinem bestimmten physischen Browser überein, sie werden jedoch von anderen Definitionen zum Erben von Einstellungen verwendet. Die folgende Default-Browserdefinition ist beispielsweise in der Datei Default.browser enthalten:

    <defaultBrowser id="Default">
        <capabilities>
            <capability name="ecmascriptversion"   value="0.0" />
            <capability name="javascript"          value="false" />
            <capability name="jscriptversion"      value="0.0" />
        </capabilities>
    </defaultBrowser>

Die Standardbrowserdefinition wird von vielen anderen Browserdefinitionen geerbt. Die folgende Definition für den Panasonic-Browser ist zum Beispiel in der Datei Panasonic.browser enthalten.

<browser id="Panasonic" parentID="Default">

In der folgenden Tabelle wird das im defaultBrowser-Element enthaltene Attribut beschrieben.

Attribut

Beschreibung

id

Erforderliches String-Attribut.

Gibt den eindeutigen Namen für den Browser an.

Das defaultBrowser-Element kann die gleichen untergeordneten Elemente wie das browser-Element enthalten.

gateway

Gibt eine einzelne Gatewaydefinition an. Einige mobile Browser sind über ein Gateway, das eigene Funktionen hinzufügen kann, mit dem Webserver verbunden. Es ist möglich, dass mehrere gateway-Elemente auf das gleiche refID-Attribut verweisen.

Das gateway-Element kann die gleichen Attribute und die gleichen untergeordneten Elemente wie das browser-Element enthalten. Die folgende Definition für das IE3AK-Gateway stammt beispielsweise aus der Datei IE.browser.

    <gateway id="IE3AK" parentID="IE3">
        <identification>
            <capability name="extra" match="; AK;" />
        </identification>
        <capture>
        </capture>
        <capabilities>
            <capability name="ak"  value="true" />
        </capabilities>
    </gateway>

Tipp

Ihre Anwendung darf keine Browserdefinitionsdatei mit einem browser-Element enthalten, dessen parentID-Attribut auf ein gateway-Element in den Standarddefinitionsdateien im Verzeichnis %SystemRoot\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers verweist. Sie können das parentID-Attribut jedoch so festlegen, dass auf eine Browserdefinitionsdatei im selben Ordner App_Browsers verwiesen wird.

header (untergeordnetes Element von identification oder capture)

Gibt einen Ausdruck an, mit dem in der Anforderung ein bestimmter HTTP-Header verglichen werden soll bzw. der einen bestimmten HTTP-Header aufzeichnen soll. Die folgende Definition für den Wml-Browser in der Datei Default.browser identifiziert beispielsweise einen übereinstimmenden Browser durch Vergleichen des Accept-Headers mit zwei regulären Ausdrücken.

<identification>
    <header name="Accept" 
            match="text/vnd\.wap\.wml|text/hdml" />
    <header name="Accept" 
            nonMatch="application/xhtml\+xml; profile|application/vnd\.wap\.xhtml\+xml" />
</identification>

In der folgenden Tabelle werden die Attribute beschrieben, die das header-Element enthält. Es muss entweder das match-Attribut oder das nonMatch-Attribut vorhanden sein, jedoch nicht beide.

Attribut

Beschreibung

match

String-Attribut, kann nicht im gleichen Element wie das nonMatch-Attribut verwendet werden.

Gibt den regulären Ausdruck an, mit dem der Anforderungsheaderwert übereinstimmen muss, damit diese Identifikation erfüllt wird. Informationen zum Formatieren von regulären Ausdrücken finden Sie unter Reguläre Ausdrücke von .NET Framework.

name

Erforderliches String-Attribut.

Gibt den Namen des Headers an.

nonMatch

String-Attribut, kann nicht im gleichen Element wie das match-Attribut verwendet werden. Dieses Attribut wird nicht im untergeordneten capability-Element des capture-Elements verwendet.

Gibt den regulären Ausdruck an, mit dem der Anforderungsheaderwert nicht übereinstimmen darf, damit diese Identifikation erfüllt wird.

Das header-Element enthält keine untergeordneten Elemente.

header (untergeordnetes Element von sampleHeaders)

Gibt einen einzelnen Beispielheader für diesen Browser an. Dieses Element ist optional und dient nur zu Informationszwecken. Mit diesen Headern kann ein Tool zum Debuggen oder Simulieren den Browser für eine Anforderung emulieren.

In der folgenden Tabelle werden die Attribute beschrieben, die das header-Element enthält.

Attribut

Beschreibung

name

Optionales String-Attribut.

Gibt den Namen des Headers an.

value

Optionales String-Attribut.

Gibt den Wert des Headers an.

Das header-Element enthält keine untergeordneten Elemente.

identification

Gibt Informationen dazu an, wie dieser Browser von der eingehenden Anforderung identifiziert wird.

Das identification-Element enthält keine Attribute.

Das identification-Element kann eins oder mehrere der folgenden untergeordneten Elemente enthalten:

  • header

  • userAgent

  • capability

sampleHeaders

Gibt eine Gruppe von Beispielheadern für diesen Browser an. Dieses Element ist optional und dient nur zu Informationszwecken. Mit diesen Headern kann ein Tool zum Debuggen oder Simulieren den Browser für eine Anforderung emulieren.

Das sampleHeaders-Element enthält keine Attribute.

Das sampleHeaders-Element kann keine oder mehrere der folgenden untergeordneten Elemente enthalten:

  • header

userAgent

Gibt einen Ausdruck an, mit dem der Header des Benutzer-Agents einer Anforderung verglichen werden soll. Die folgende Definition für den IE4-Browser in der Datei IE.browser identifiziert beispielsweise mithilfe der "MSIE 4"-Zeichenfolge den Browser anhand des Headers für den Benutzer-Agent, der mit der Anforderung gesendet wird.

        <identification>
            <userAgent match="MSIE 4" />
        </identification>

In der folgenden Tabelle werden die Attribute beschrieben, die das userAgent-Element enthält. Es muss entweder das match-Attribut oder das nonMatch-Attribut vorhanden sein, jedoch nicht beide.

Attribut

Beschreibung

match

String-Attribut, kann nicht im gleichen Element wie das nonMatch-Attribut verwendet werden.

Gibt den regulären Ausdruck an, mit dem der Benutzer-Agent übereinstimmen muss, damit diese Identifikation erfüllt wird. Informationen zum Formatieren von regulären Ausdrücken finden Sie unter Reguläre Ausdrücke von .NET Framework.

nonMatch

String-Attribut, kann nicht im gleichen Element wie das match-Attribut verwendet werden.

Gibt den regulären Ausdruck an, mit dem der Benutzer-Agent nicht übereinstimmen darf, damit diese Identifikation erfüllt wird. Dieses Attribut wird nicht im untergeordneten capability-Element des capture-Elements verwendet.

Das userAgent-Element enthält keine untergeordneten Elemente.

Hinweise

Wenn Sie feststellen, dass keine der vorhandenen Browserdefinitionsdateien die Kriterien erfüllt, können Sie neue Browserdefinitionsdateien mithilfe des Codes im untenstehenden Abschnitt Beispiel erstellen.

Sicherheitshinweis:

Sie sollten Browserdefinitionsdateien von Drittanbietern nur herunterladen oder installieren, wenn Sie diese als vertrauenswürdig einstufen. Überprüfen Sie eine neue Browserdefinitionsdatei auf Verweise auf unbekannte Namespaces. Weitere Informationen finden Sie unter Absichern von Browserdefinitionsdateien.

Vordefinierte Browserdefinitionsdateien werden im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG\Browsers gespeichert. Browserdefinitionsdateien der Anwendungsebene können im Verzeichnis App_Browsers der Anwendung gespeichert werden. An beiden Speicherorten müssen Browserdefinitionsdateien die Dateinamenerweiterung .browser aufweisen. Die in ASP.NET enthaltenen Browserdefinitionsdateien sollten nicht geändert werden, da diese Dateien möglicherweise durch Service Packs aktualisiert werden und dabei Ihre Änderungen überschrieben werden. Erstellen Sie stattdessen neue BROWSER-Dateien und verwenden Sie das parentID-Attribut in einer neuen browser-Definition zum Erben von Einstellungen, oder fügen Sie einer vorhandenen Browserdefinition mithilfe des refID-Attributs Funktionen hinzu.

Informationen zu Browserdefinitionsdateien werden zur Laufzeit in einer Auflistung von bekannten Browsern in einem BrowserCapabilitiesFactory-Objekt zusammengeführt. Wenn eine Anforderung gestellt wird, identifiziert ASP.NET anhand des Anforderungsheader den anfordernden Browser und kompiliert ein HttpBrowserCapabilities-Objekt, das dem Typ des angeforderten Browsers entspricht. Bei diesem Vorgang wird mit einem leeren Verzeichnis begonnen, und auf die Browserdefinitionsstruktur werden die folgenden rekursiven Schritte angewendet:

  1. Beginnen mit der Standardbrowserdefinition, die immer als Übereinstimmung gilt.

  2. Zusammenführen der in dieser Browserdefinition angegebenen Funktionswerte mit dem Funktionswörterbuch für diesen Browser. In einer Browserdefinition angegebene Werte überschreiben die in einem übergeordneten Element angegebenen Werte.

  3. Werten Sie alle untergeordneten Definitionen aus, um eine Übereinstimmung zu ermitteln. Beginnen Sie für jedes übereinstimmende untergeordnete Element wieder bei Schritt 1. Browserdefinitionen werden nach Gatewaydefinitionen ausgewertet. Wenn der Benutzer-Agent mit mehr als einer Browserdefinition oder mehr als einer Gatewaydefinition übereinstimmt, wird zur Laufzeit eine Ausnahme ausgelöst.

Das HttpBrowserCapabilities-Objekt wird zwischengespeichert und kann für eine andere Anforderung eines Browsers vom gleichen Typ wiederverwendet werden.

Eine Webanwendung kann auf die aktuelle Instanz des HttpBrowserCapabilities-Objekts mithilfe der HttpRequest.Browser-Eigenschaft zugreifen. Dieses Objekt ist schreibgeschützt und enthält Eigenschaften für jede Funktion. Webentwickler können auch eine benutzerdefinierte Klasse erstellen, die von der HttpBrowserCapabilities-Klasse erbt, und eine Instanz in der HttpRequest.Browser-Eigenschaft speichern.

Änderungen an BROWSER-Dateien im Verzeichnis App_Browsers machen den Zwischenspeicher ungültig, und die nächste Anforderung bewirkt, dass die Anwendung erneut kompiliert wird. Wenn jedoch BROWSER-Dateien im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG\Browsers geändert werden, müssen Sie die Anwendung mit dem Tool %SystemRoot%\Microsoft.NET\Framework\Version\aspnet_regbrowsers.exe erneut kompilieren. Die Anwendung kann auch mithilfe der BrowserCapabilitiesCodeGenerator-Klasse programmgesteuert erneut kompiliert werden.

Tipp

Das Definieren von Browsern mithilfe des browserCaps-Elements in der Datei Web.config ist in .NET Framework 2.0 veraltet, wird jedoch weiterhin unterstützt. Die Daten in diesem Element werden mit den Informationen aus den Browserdefinitionsdateien zusammengeführt.

Wenn ein Browser eine Anforderung an Ihre Anwendung stellt, werden die Funktionen des Browsers in der Browser-Eigenschaft gespeichert. Die Identität des Browsers wird in der UserAgent-Eigenschaft gespeichert. ASP.NET-Webserver-Steuerelemente fragen die Liste von Funktionen ab, um zu entscheiden, wie das Verhalten von Steuerelementen auf geeignete Weise an verschiedene Browser angepasst werden soll.

Funktionen

Eine Liste von stark typisierten Browserfunktionen finden Sie unter den Eigenschaften der HttpCapabilitiesBase-Klasse. Diese Eigenschaften verwenden die Höckerschreibweise in Browserdefinitionsdateien. Wenn Sie beispielsweise die BackgroundSounds-Funktion in Ihrer Browserdefinitionsdatei angeben möchten, geben Sie backgroundSounds ein.

Sie können auch eigene Funktionen definieren.

Es gibt zwei Möglichkeiten, wie eine Webanwendung Funktionswerte vom HttpBrowserCapabilities-Objekt abrufen kann:

  • Durch Zugriff auf das Funktionswörterbuch. Diese Methode kann für benutzerdefinierte Funktionen verwendet werden.

    Sie können beispielsweise den Wert der ECMAScript-Funktion (JavaScript) für den Browser des aktuellen Clients mithilfe des folgenden Codes abrufen:

    String cap_javascript = Request.Browser["javascript"];
    
  • Durch Aufrufen einer stark typisierten Eigenschaft, die eine Funktion einbindet.

    Sie können beispielsweise den Wert der ECMAScript-Funktion für den Browser des aktuellen Clients mithilfe des folgenden Codes abrufen:

    String cap_javascript = Request.JavaScript;
    

Standardkonfiguration

.NET Framework verfügt über vordefinierte Browserdefinitionsdateien im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG\Browsers. Sie können Browserdefinitionsdateien auf Anwendungsebene im Verzeichnis App_Browsers der Anwendung erstellen. Informationen zu besonderen ASP.NET-Verzeichnissen finden Sie unter ASP.NET-Websitelayout.

Das folgende Codebeispiel ist ein Auszug aus der Datei Generic.browser im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG\Browsers.

Tipp

Ändern Sie vorhandenen Browserdefinitionsdateien im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG\Browsers nicht. Diese werden von .NET Framework verwaltet.

<browsers>
    <browser id="GenericDownlevel" parentID="Default">
        <identification>
            <userAgent match="^Generic Downlevel$" />
        </identification>

        <capture>
        </capture>

        <capabilities>
            <capability name="cookies"                     value="false" />
            <capability name="ecmascriptversion"           value="1.0" />
            <capability name="tables"                      value="true" />
            <capability name="type"                        value="Downlevel" />
        </capabilities>
        <controlAdapters>
            <adapter controlType="System.Web.UI.WebControls.Menu"
            adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
        </controlAdapters>
    </browser>
</browsers>

Das folgende Codebeispiel ist ein Auszug aus der Datei WebTV.browser im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\Version\CONFIG\Browsers.

<browsers>
    <browser id="WebTV" parentID="IE2">
        <identification>
            <userAgent match="WebTV/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))" />
        </identification>

        <capture>
        </capture>

        <capabilities>
            <capability name="backgroundsounds"    value="true" />
            <capability name="browser"             value="WebTV" />
            <capability name="cookies"             value="true" />
            <capability name="isMobileDevice"      value="true" />
            <capability name="letters"             value="${letters}" />
            <capability name="majorversion"        value="${major}" />
            <capability name="minorversion"        value="${minor}" />
            <capability name="tables"              value="true" />
            <capability name="type"                value="WebTV${major}" />
            <capability name="version"             value="${version}" />
        </capabilities>

        <controlAdapters markupTextWriterType="System.Web.UI.Html32TextWriter">
        </controlAdapters>
    </browser>

    <browser id="WebTV2" parentID="WebTV">
        <identification>
            <capability name="minorversion" match="2" />
        </identification>

        <capture>
        </capture>

        <capabilities>
            <capability name="css1"                value="true" />
            <capability name="ecmascriptversion"   value="1.0" />
            <capability name="javascript"          value="true" />
        </capabilities>
    </browser>

    <gateway id="WebTVbeta" parentID="WebTV">
        <identification>
            <capability name="letters" match="^b" />
        </identification>

        <capture>
        </capture>

        <capabilities>
            <capability name="beta"    value="true" />
        </capabilities>
    </gateway>
</browsers>

Beispiel

Das folgende Codebeispiel ist eine leere BROWSER-Datei, in der Sie Elemente erstellen können. Stellen Sie sicher, dass keine zirkulären Verweise in den Browserdateien erstellt werden.

<?xml version="1.0" encoding="utf-8"?>

<browsers>
    <browser id="NewBrowser" parentID="Mozilla">
        <identification>
            <userAgent match="Unique User Agent Regular Expression" />
        </identification>

        <capture>
            <userAgent match="NewBrowser (?'version'\d+\.\d+)" />
        </capture>

        <capabilities>
            <capability name="browser" value="My New Browser" />
            <capability name="version" value="${version}" />
        </capabilities>
    </browser>

    <browser refID="Mozilla">
        <capabilities>
            <capability name="xml" value="true" />
        </capabilities>
    </browser>
</browsers>

Elementinformationen

Konfigurationsabschnittshandler

System.Web.Configuration.HttpCapabilitiesSectionHandler

Konfigurationsmember

HttpRequest.Browser

HttpCapabilitiesBase.Browsers

HttpCapabilitiesBase.Capabilities

System.Web.HttpBrowserCapabilities

Konfigurierbare Speicherorte

Verzeichnis Browsers auf der Stammebene des Computers

Verzeichnis App_Browsers auf Anwendungsebene

Anforderungen

IIS 5.0 (Internetinformationsdienste), IIS 5.1 oder IIS 6.0

.NET Framework, Version 2.0

Visual Studio 2005

Siehe auch

Aufgaben

Gewusst wie: Erkennen von Browsertypen auf ASP.NET-Webseiten

Konzepte

ASP.NET-Webserversteuerelemente und Browserfunktionen

Absichern von Browserdefinitionsdateien

ASP.NET-Konfigurationsszenarios

Übersicht über die Gerätefilterung in ASP.NET

Architektonische Übersicht über das adaptive Steuerelementverhalten

Übersicht über die ASP.NET-Webentwicklung für mobile Geräte

Referenz

Browsers

Capabilities

HttpCapabilitiesSectionHandler

HttpBrowserCapabilities

deviceFilters-Element (ASP.NET-Einstellungsschema)

mobileControls-Element (ASP.NET-Einstellungsschema)

browserCaps-Element (ASP.NET-Einstellungsschema)

Weitere Ressourcen

Allgemeine Konfigurationseinstellungen (ASP.NET)

ASP.NET-Konfigurationseinstellungen