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:
In der folgenden Tabelle werden die erforderlichen Attribute im adapter-Element beschrieben.
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.
Das browser-Element kann 0 (null) oder eines der folgenden untergeordneten Elemente enthalten:
|
||||||||||
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 (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.
Das capability-Element enthält die folgenden erforderlichen Attribute.
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.
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.
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.
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:
Das capture-Element enthält keine Attribute. Das capture-Element kann keine oder mehrere der folgenden untergeordneten Elemente enthalten:
|
||||||||||
controlAdapters |
Definiert einen Steuerelementadapter zum Anpassen des Serversteuerelements an den Browser. In der folgenden Tabelle wird das im controlAdapters -Element enthaltene Attribut beschrieben.
Das controlAdapters-Element kann keine oder mehrere der folgenden untergeordneten Elemente enthalten:
|
||||||||||
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:
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.
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.
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.
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.
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.
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:
|
||||||||||
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:
|
||||||||||
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.
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.
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:
Beginnen mit der Standardbrowserdefinition, die immer als Übereinstimmung gilt.
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.
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 |
|
Konfigurationsmember |
|
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
HttpCapabilitiesSectionHandler
deviceFilters-Element (ASP.NET-Einstellungsschema)
mobileControls-Element (ASP.NET-Einstellungsschema)
browserCaps-Element (ASP.NET-Einstellungsschema)