Schema del file di definizione del browser (elemento browsers)
Aggiornamento: novembre 2007
I file di definizione del browser contengono le definizioni per i singoli browser. In fase di esecuzione ASP.NET utilizza le informazioni nell'intestazione della richiesta per determinare quale tipo di browser ha effettuato la richiesta. Utilizza quindi i file con estensione browser per determinare le funzionalità del browser e la modalità di rendering del codice in tale browser. Questa funzione è utile per gli sviluppatori Web che desiderano creare applicazioni da visualizzare su dispositivi mobili, utilizzando gli adattatori di controllo che adattano il comportamento di un controllo server Web ASP.NET a seconda del tipo di dispositivo. Per ulteriori informazioni, vedere i collegamenti nella sezione Vedere anche.
Nota
I file di definizione del browser sono stati introdotti in .NET Framework versione 2.0. Nelle versioni precedenti di .NET Framework, per specificare le definizioni dei browser nei file di configurazione veniva utilizzato l'elemento browserCaps.
Per l'elemento browsers viene utilizzata la struttura seguente.
<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>
Attributi ed elementi
Elemento |
Descrizione |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
adapter |
Specifica un mapping tra un controllo server Web ASP.NET e l'adattatore utilizzato per eseguirne il rendering nel browser corrente. Nella seguente definizione per il browser NokiaMobileBrowserRainbow contenuta nel file Nokia.browser viene ad esempio specificato che i controlli server Menu devono essere adattati al browser utilizzando la classe di adattatori di controllo MenuAdapter:
Nella tabella riportata di seguito vengono descritti gli attributi obbligatori contenuti nell'elemento adapter.
L'elemento adapter non contiene elementi figlio. |
||||||||||
browser |
Definisce una singola definizione di browser. Nella tabella riportata di seguito vengono descritti gli attributi che può contenere l'elemento browser. Nota Non modificare i file di definizione del browser forniti con ASP.NET, perché questi file potrebbero essere aggiornati dai service pack, sovrascrivendo le modifiche. Creare invece nuovi file con estensione browser e utilizzare l'attributo parentID in una nuova definizione di browser per ereditare le impostazioni oppure l'attributo refID per aggiungere funzionalità a una definizione esistente. In una definizione di browser è necessario definire l'attributo refID oppure entrambi gli attributi id e parentID.
L'elemento browser può contenere o meno uno dei seguenti elementi figlio:
|
||||||||||
browsers |
Rappresenta l'elemento di primo livello necessario di un file con estensione browser. |
||||||||||
capabilities |
Definisce i valori delle funzionalità da impostare per la definizione del browser corrente. Per un elenco di funzionalità di browser fortemente tipizzate, vedere le proprietà della classe HttpCapabilitiesBase. La maggior parte di queste proprietà utilizza la convenzione Camel nei file di definizione del browser. È inoltre possibile aggiungere valori di funzionalità personalizzati. L'elemento capabilities non contiene attributi. L'elemento capabilities può contenere o meno uno o più dei seguenti elementi figlio:
|
||||||||||
capability (elemento figlio di capabilities) |
Definisce un singolo valore di funzionalità da impostare per la definizione del browser corrente. Nel file IE.browser vengono ad esempio definite le seguenti funzionalità per il browser IE. Questa definizione di esempio eredita altre funzionalità dalla definizione del browser Mozilla contenuta nel file Mozilla.browser. I valori che contengono testo all'interno di un simbolo del dollaro seguito da parentesi graffe (${}) vengono sostituiti con i valori acquisiti dall'espressione corrispondente contenuta nell'elemento figlio userAgent dell'elemento identification"^Mozilla[^(]*\([C|c]ompatible;\s*MSIE (?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))(?'extra'[^)]*)".
L'elemento capability contiene i seguenti attributi obbligatori:
L'elemento capability non contiene elementi figlio. |
||||||||||
capability (elemento figlio di identification o capture) |
Specifica che è necessario impostare una corrispondenza tra il valore di una funzionalità della classe del browser padre e un'espressione regolare. Nella seguente definizione del browser IE5to9 contenuta nel file IE.browser viene ad esempio utilizzato un elemento capability per specificare che l'impostazione della funzionalità majorversion della definizione padre IE deve corrispondere all'espressione regolare inclusa, affinché questa definizione del browser corrisponda al browser del client. Questa definizione di browser di esempio include elementi capability che si aggiungono o sovrascrivono gli elementi della definizione padre.
Nella tabella riportata di seguito vengono descritti gli attributi contenuti nell'elemento capability. È necessario definire l'attributo match o nonMatch, ma non entrambi.
L'elemento capability non contiene elementi figlio. |
||||||||||
capture |
Definisce le informazioni sugli elementi header, userAgent o capability aggiuntivi da utilizzare per acquisire informazioni sul browser. Questa opzione è utile quando si tenta di individuare nuovi browser che non erano disponibili al momento del rilascio di .NET Framework 2.0. Per acquisire i valori, una definizione di browser può includere acquisizioni di espressioni regolari nell'attributo match di qualsiasi elemento di identificazione. Il seguente elemento userAgent definito nel file IE.browser acquisisce ad esempio l'altezza dello schermo in pixel dall'intestazione della richiesta dell'agente utente.
Per una definizione del browser potrebbe inoltre essere necessario acquisire informazioni aggiuntive mediante la scansione delle intestazioni di richiesta che non vengono utilizzate per distinguere la classe di browser. Il seguente elemento capture acquisisce ad esempio il numero di tasti softkey per un telefono cellulare OpenWave. I tasti softkey visualizzano menu e comandi quando l'utente preme i pulsanti hardware corrispondenti su dispositivi SmartPhone basati su Windows Mobile:
L'elemento capture non contiene attributi. L'elemento capture può contenere o meno uno o più dei seguenti elementi figlio:
|
||||||||||
controlAdapters |
Definisce un adattatore di controllo da utilizzare per adattare il controllo server sul browser. Nella tabella riportata di seguito viene descritto l'attributo contenuto nell'elemento controlAdapters .
L'elemento controlAdapters può contenere o meno uno o più dei seguenti elementi figlio:
|
||||||||||
defaultBrowser |
Definisce le funzionalità del browser Default nel file Default.browser. Tali definizioni non corrispondono ad alcun browser fisico specifico ma vengono utilizzate da altre definizioni per ereditare le impostazioni. Ad esempio, la seguente definizione del browser Default è contenuta nel file Default.browser:
La definizione del browser Default è ereditata da numerose altre definizioni di browser. Ad esempio, la seguente definizione per il browser Panasonic è contenuta nel file Panasonic.browser. <browser id="Panasonic" parentID="Default"> Nella tabella riportata di seguito viene descritto l'attributo contenuto nell'elemento defaultBrowser.
L'elemento defaultBrowser può contenere gli stessi elementi figlio dell'elemento browser. |
||||||||||
gateway |
Specifica una singola definizione di gateway. Alcuni browser mobili vengono connessi al server Web tramite un gateway, che può aggiungere funzionalità specifiche. È possibile che più elementi gateway facciano riferimento allo stesso attributo refID. L'elemento gateway può contenere gli stessi attributi e elementi figlio dell'elemento browser. Ad esempio, la seguente definizione per il gateway IE3AK è contenuta nel file IE.browser.
Nota Non è possibile utilizzare un file di definizione del browser nell'applicazione che contenga un elemento browser il cui attributo parentID fa riferimento a un elemento gateway nei file di definizione predefiniti che si trovano nella directory %SystemRoot\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers. Tuttavia, è possibile impostare l'attributo parentID in modo da fare riferimento a un file di definizione del browser diverso nella stessa cartella App_Browsers. |
||||||||||
header (elemento figlio di identification o capture) |
Specifica un'espressione con cui deve essere confrontata o che deve acquisire una specifica intestazione HTTP nella richiesta. La seguente definizione per il browser Wml contenuta nel file Default.browser identifica ad esempio un browser corrispondente confrontando l'intestazione Accept con due espressioni regolari.
Nella tabella riportata di seguito vengono descritti gli attributi contenuti nell'elemento header. È necessario che sia presente l'attributo match o nonMatch, ma non entrambi.
L'elemento header non contiene elementi figlio. |
||||||||||
header (elemento figlio di sampleHeaders) |
Specifica una singola intestazione di esempio per il browser. Questo elemento è facoltativo e viene fornito unicamente a titolo informativo. Un simulatore oppure uno strumento di debug può utilizzare questo set di intestazioni per emulare il browser per una richiesta. Nella tabella riportata di seguito vengono descritti gli attributi contenuti nell'elemento header.
L'elemento header non contiene elementi figlio. |
||||||||||
identification |
Definisce le informazioni su come identificare il browser dalla richiesta in arrivo. L'elemento identification non contiene attributi. L'elemento identification può contenere uno o più dei seguenti elementi figlio:
|
||||||||||
sampleHeaders |
Specifica un set di intestazioni di esempio per il browser. Questo elemento è facoltativo e viene fornito unicamente a titolo informativo. Un simulatore oppure uno strumento di debug può utilizzare questo set di intestazioni per emulare il browser per una richiesta. L'elemento sampleHeaders non contiene attributi. L'elemento sampleHeaders può contenere o meno uno o più dei seguenti elementi figlio:
|
||||||||||
userAgent |
Specifica un'espressione da confrontare all'intestazione dell'agente utente di una richiesta. Nella seguente definizione per il browser IE4 contenuta nel file IE.browser viene ad esempio utilizzata la stringa "MSIE 4" per identificare il browser in base all'intestazione dell'agente utente inviata con la richiesta.
Nella tabella riportata di seguito vengono descritti gli attributi contenuti nell'elemento userAgent. È necessario che sia presente l'attributo match o nonMatch, ma non entrambi.
L'elemento userAgent non contiene elementi figlio. |
Note
Se nessuno dei file di definizione del browser esistenti soddisfa i criteri specificati, è possibile creare nuovi file utilizzando il codice riportato nella sezione Esempio seguente.
Nota sulla sicurezza: |
---|
Non scaricare né installare file di definizione del browser da terze parti a meno che la fonte non sia considerata attendibile. Esaminare un nuovo file di definizione del browser per verificare se viene fatto riferimento a spazi dei nomi non riconosciuti. Per ulteriori informazioni, vedere Protezione di file di definizione del browser. |
I file di definizione del browser predefiniti sono memorizzati nella directory %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. I file di definizione del browser a livello di applicazione possono essere memorizzati nella directory App_Browsers dell'applicazione. In entrambe le directory i file di definizione del browser devono avere l'estensione browser. Non modificare i file di definizione del browser forniti con ASP.NET, perché questi file potrebbero essere aggiornati dai service pack, sovrascrivendo le modifiche. Creare invece nuovi file con estensione browser e utilizzare l'attributo parentID in una nuova definizione di browser per ereditare le impostazioni oppure l'attributo refID per aggiungere funzionalità a una definizione esistente.
In fase di esecuzione le informazioni del file di definizione del browser vengono unite in un insieme di browser noti in un oggetto BrowserCapabilitiesFactory. Quando viene effettuata una richiesta, ASP.NET identifica il browser richiedente dall'intestazione della richiesta e compila un oggetto HttpBrowserCapabilities che corrisponde al tipo del browser richiesto. Questa operazione viene eseguita iniziando da un dizionario vuoto e applicando i seguenti passaggi ricorsivi nella struttura di definizione del browser:
Iniziare dalla definizione del browser predefinita, che viene sempre considerata una corrispondenza corretta.
Unire i valori delle funzionalità specificati in questa definizione nel dizionario di funzionalità relativo al browser. I valori specificati in una definizione del browser eseguono l'override di quelli impostati in un oggetto padre.
Valutare ogni definizione figlio per determinare una corrispondenza. Per ogni elemento figlio corrispondente, iniziare nuovamente dal passaggio 1. Le definizioni del browser vengono valutate dopo quelle del gateway. Se l'agente utente corrisponde a più di una definizione del browser o a più di una definizione del gateway, in fase di esecuzione verrà generata un'eccezione.
L'oggetto HttpBrowserCapabilities viene memorizzato nella cache e potrebbe essere utilizzato di nuovo per una richiesta differente dello stesso tipo di browser.
Un'applicazione Web può accedere all'istanza corrente dell'oggetto HttpBrowserCapabilities utilizzando la proprietà HttpRequest.Browser. L'oggetto è in sola lettura è contiene le proprietà di ogni funzionalità. In alternativa uno sviluppatore Web può costruire una classe personalizzata che eredita dalla classe HttpBrowserCapabilities e memorizzare un'istanza nella proprietà HttpRequest.Browser.
Le modifiche apportate ai file con estensione browser situati nella directory App_Browsers invalidano la cache e con la richiesta successiva l'applicazione verrà ricompilata. Se tuttavia le modifiche vengono apportate nei file con estensione browser nella directory %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers, è necessario ricompilare l'applicazione manualmente utilizzando lo strumento %SystemRoot%\Microsoft.NET\Framework\version\aspnet_regbrowsers.exe oppure a livello di codice utilizzando la classe BrowserCapabilitiesCodeGenerator.
Nota
L'utilizzo dell'elemento browserCaps nel file Web.config per definire i browser è sconsigliato in .NET Framework 2.0, anche se supportato. I dati contenuti in questo elemento vengono uniti alle informazioni dei file di definizione del browser.
Quando un browser effettua una richiesta all'applicazione, le relative funzionalità vengono memorizzate nella proprietà Browser. L'identità del browser viene memorizzata nella proprietà UserAgent. I controlli server Web ASP.NET effettuano una query nell'elenco di funzionalità per definire come adattare il comportamento dei controlli in modo appropriato per browser differenti.
Funzionalità
Per un elenco di funzionalità di browser fortemente tipizzate, vedere le proprietà della classe HttpCapabilitiesBase. Queste proprietà utilizzano la convenzione Camel nei file di definizione del browser. Se ad esempio si desidera specificare la funzionalità BackgroundSounds nel file di definizione del browser, digitarla nel formato backgroundSounds.
È inoltre possibile definire funzionalità personalizzate.
Un'applicazione Web può recuperare i valori delle funzionalità dall'oggetto HttpBrowserCapabilities in uno dei due modi seguenti:
Mediante l'accesso al dizionario delle funzionalità. È possibile utilizzare questo metodo per le funzionalità personalizzate.
Per ottenere ad esempio il valore della funzionalità ECMAScript (JavaScript) per il browser del client corrente, è possibile utilizzare il seguente codice:
String cap_javascript = Request.Browser["javascript"];
Mediante una chiamata a una proprietà fortemente tipizzata che incapsula una funzionalità.
Per ottenere ad esempio il valore della funzionalità ECMAScript per il browser del client corrente, è possibile utilizzare il seguente codice:
String cap_javascript = Request.JavaScript;
Configurazione predefinita
Con .NET Framework vengono forniti i file di definizione del browser predefiniti nella directory %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. È possibile creare file di definizione del browser a livello di applicazione nella directory App_Browsers dell'applicazione. Per informazioni sulle directory speciali di ASP.NET, vedere Layout del sito Web ASP.NET.
L'esempio di codice riportato di seguito è tratto dal file Generic.browser nella directory %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers.
Nota
Non modificare i file di definizione del browser memorizzati nella directory %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers, in quanto vengono gestiti da .NET Framework.
<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>
L'esempio di codice riportato di seguito è tratto dal file WebTV.browser nella directory %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>
Esempio
L'esempio di codice riportato di seguito è un file con estensione browser vuoto che è possibile utilizzare come base. Prestare attenzione a non creare riferimenti circolari nei file browser.
<?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>
Informazioni sull'elemento
Gestore della sezione di configurazione |
|
Membri di configurazione |
|
Percorsi configurabili |
Directory Browsers a livello di radice del computer Directory App_Browsers a livello di applicazione |
Requisiti |
Internet Information Services (IIS) 5.0, IIS 5.1 o IIS 6.0 .NET Framework versione 2.0 Visual Studio 2005 |
Vedere anche
Attività
Procedura: rilevare tipi di browser in pagine Web ASP.NET
Concetti
Controlli server Web ASP.NET e funzionalità del browser
Protezione di file di definizione del browser
Scenari di configurazione ASP.NET
Cenni preliminari sul filtro di periferica ASP.NET
Cenni preliminari sull'architettura del comportamento adattivo di un controllo
Cenni preliminari sullo sviluppo di pagine Web mobili ASP.NET
Riferimenti
HttpCapabilitiesSectionHandler
Elemento deviceFilters (schema delle impostazioni ASP.NET)
Elemento mobileControls (schema delle impostazioni ASP.NET)
Elemento browserCaps (schema delle impostazioni ASP.NET)