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.