questions net mvc examen exam developing asp applications c# .net browser request httpbrowsercapabilities

c# - mvc - .NET Request Browser identifica Opera como Chrome



exam 70-486 (1)

Entonces en mi código tengo:

return Request.Browser.Browser + " " + Request.Browser.MajorVersion

Cuando uso Opera, tuve la versión 21 y ahora la última versión 33, pero mi código siempre devuelve Chrome. Devolvió "Chrome 34" para Opera 21 y "Chrome 46" para Opera 33.

¿Por qué está sucediendo esto y cómo lo soluciono?


Las cadenas de agente de usuario para Chrome y Opera son casi las mismas. Solo el final es diferente.

Estoy usando la versión de Opera 33.0.1990.58 y la versión de Chrome es 46.0.2490.86.

Aquí están los agentes de usuario que obtengo de cada uno:

Chrome 46 = Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 46.0.2490.86 Safari / 537.36

Opera 33 = Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 46.0.2490.80 Safari / 537.36 OPR / 33.0.1990.58

En Microsoft.NET/Framework/YOURVERSION/Config/Browsers, puede ver el XML que muestra .NET cómo analizar cadenas de agente. La identificación chrome.browser es: en .NET 4.0.

En ese mismo directorio, la identificación de Opera.browser se ve así: / "/>.

Así que Opera se muestra a sí misma como Chrome porque .NET no conoce ningún otro nodo mejor que el agente de usuario de Opera no se ajusta a la expresión regular que está buscando .NET.