¿Es posible en ASP.NET derivar el navegador MajorVersion solo de la cadena del agente de usuario de la solicitud HTTP?

Tenemos una aplicación que usaRequest.Browser.MajorVersion como parte de una clave de caché. Tenemos el desafío de determinar qué clave de caché se usó para un conjunto de solicitudes históricas. Para hacer esto, estamos analizando los registros de IIS, por lo que debemos determinar cuál habría sido el valor para ASP.NETRequest.Browser.MajorVersion para cada solicitud ¿Es posible derivar esto solo de la cadena del agente de usuario?

ACTUALIZAR

Originalmente asumí el valor deRequest.Browser.MajorVersion sería la versión tomada directamente de la cadena del agente de usuario. Sin embargo, en una sesión de depuración para confirmar esta teoría, veo esto:

Hubiera esperadoRequest.Browser.MajorVersion ser 61, no 44. ¿Alguien puede dar una idea de por qué estos valores difieren y cómo podría decir con confianza cuál es el valor deRequest.Browser.MajorVersion sería para una cadena de agente de usuario determinada?

ACTUALIZACIÓN 2

He descubierto que ASP.NET usa un conjunto de plantillas para construir elHttpBrowserCapabilities objeto establecido comoRequest.Browser. Estos están disponibles aquí:

% SystemRoot% \ Microsoft.NET \ Framework [versión] \ Config \ Browsers

Mirando las plantillas, todas usan expresiones regulares para analizar la cadena del agente de usuario (he pegado el contenido de chrome.browser a continuación), lo que sugiere queRequest.Browser.MajorVersion debería corresponde con el valor en la cadena del agente de usuario. Así que todavía no tengo idea de por qué mi aplicación local devuelve 44 como ese valor.

<browsers>
    <!-- Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.168.0 Safari/530.1 -->
    <browser id="Chrome" parentID="WebKit">
        <identification>
            <userAgent match="Chrome/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)" />
        </identification>

        <capabilities>
          <capability name="browser"                         value="Chrome" />
          <capability name="majorversion"                    value="${major}" />
          <capability name="minorversion"                    value="${minor}" />
          <capability name="type"                            value="Chrome${major}" />
          <capability name="version"                         value="${version}" />
          <capability name="ecmascriptversion"               value="3.0" />
          <capability name="javascript"                      value="true" />
          <capability name="javascriptversion"               value="1.7" />
          <capability name="w3cdomversion"                   value="1.0" />
          <capability name="supportsAccesskeyAttribute"      value="true" />
          <capability name="tagwriter"                       value="System.Web.UI.HtmlTextWriter" />
          <capability name="cookies"                         value="true" />
          <capability name="frames"                          value="true" />
          <capability name="javaapplets"                     value="true" />
          <capability name="supportsCallback"                value="true" />
          <capability name="supportsDivNoWrap"               value="false" />
          <capability name="supportsFileUpload"              value="true" />
          <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
          <capability name="supportsMultilineTextBoxDisplay" value="true" />
          <capability name="supportsXmlHttp"                 value="true" />
          <capability name="tables"                          value="true" />
        </capabilities>
    </browser>
</browsers>

ACTUALIZACIÓN 3

Finalmente llegué al fondo de esto. Resulta que la aplicación que estaba depurando estaba usando un servicio de terceros llamado51 grados que intercepta la solicitud y aplica su propio análisis del encabezado de la solicitud, en este caso utilizando una base de datos instalada localmente en el servidor de aplicaciones. Esta base de datos había quedado desactualizada y, por lo tanto, estaba produciendo resultados extraños para más versiones recientes del navegador. Mis detalles en la Actualización 2 anterior son válidos para aplicaciones vanilla ASP.NET, pero esto explica por qué mis resultados diferían de un entorno de prueba vainilla. Gracias a todos los que perdieron el tiempo para ayudarme a investigar esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta