2010-10-08 4 views
18

Ho bisogno di analizzare stringhe UserAgent da un'app console e questo sembra un modo semplice per farlo, ma ovviamente non ho un oggetto HttpRequest e non riesco a creare uno falso con un'intestazione User-Agent (Ricevo l'eccezione non supportata dalla piattaforma). C'è un modo per farlo, o dovrei iniziare a esplorare altre alternative al parsing degli user agent?È possibile utilizzare HttpBrowserCapabilities da un'applicazione console C#?

+0

che tipo di richiesta di pagina che si desidera catturare ???? specialmente dall'app console? –

+0

Nessuna richiesta di pagina. Ho una lista di user agent in un file di testo e voglio analizzare Browser, Version, OS e un altro paio di cose - tutto ciò sarebbe stato disponibile tramite Request.Browser, ma ora sto provando a farle ottenere un'app console e un elenco di stringhe UserAgent. –

risposta

26

Il User-Agent intestazione può essere analizzata dalla classe HttpBrowserCapabilities con l'aiuto di un BrowserCapabilitiesFactory, come segue:

var userAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.10) " + 
       "Gecko/20100914 Firefox/3.6.10"; 
var browser = new HttpBrowserCapabilities { 
    Capabilities = new Hashtable {{string.Empty, userAgent}} 
}; 
var factory = new BrowserCapabilitiesFactory(); 
factory.ConfigureBrowserCapabilities(new NameValueCollection(), browser); 
+0

Funziona! Grazie! –

+0

Grazie anche a questo ho risolto il mio problema! –

+0

Voglio eseguire questo al di fuori di un ambiente asp.net (analisi dei file di registro). Non sembra che sia in grado di determinare molto bene il tipo e la versione dell'agente. "Mozilla/5.0 + (Windows + NT + 6.1) + AppleWebKit/537.36 + (KHTML, + come + Gecko) + Chrome/37.0.2062.120 + Safari/537.36" = Chrome 37, ma "Mozilla/4.0 + (compatibile; + MSIE 7.0 +; + Windows + NT + 6,1; + Trident/4.0; + SLCC2;. + NET + CLR + 2.0.50727;. + NET + CLR + 3.5.30729;. + NET + CLR + 3.0.30729; + Media + Centro + PC + 6.0; +. NET4.0C; +. NET4.0E; + InfoPath.3; + SynapseWorkstation.3.2.1; + MS-RTC + LM + 8; + Tablet + PC + 2.0) "= Mozilla. – Jeremy