Подтвердить что ты не робот

Возможно ли в ASP.NET вывести браузер MajorVersion из строки пользовательского агента HTTP-запроса?

У нас есть приложение, которое использует Request.Browser.MajorVersion как часть ключа кеша. У нас есть задача определить, какой ключ кеша использовался для набора исторических запросов. Для этого мы анализируем журналы IIS, поэтому необходимо определить, какое значение было бы для ASP.NET Request.Browser.MajorVersion для каждого запроса. Можно ли получить это только из строки пользовательского агента?

UPDATE

Первоначально предполагалось, что значение Request.Browser.MajorVersion будет версией, взятой непосредственно из строки пользовательского агента. Однако в отладочной сессии для подтверждения этой теории я вижу следующее:

Скриншот сеанса отладки

Я бы ожидал, что Request.Browser.MajorVersion будет 61, а не 44. Может ли кто-нибудь объяснить, почему эти значения отличаются, и как я могу уверенно сказать, что значение Request.Browser.MajorVersion будет для данного пользователя строка оператора?

ОБНОВЛЕНИЕ 2

Я обнаружил, что ASP.NET использует набор шаблонов для построения объекта HttpBrowserCapabilities, установленного как Request.Browser. Они доступны здесь:

% SystemRoot%\Microsoft.NET\Framework [версия]\Config\браузеры

При взгляде на шаблоны все они используют регулярное выражение для синтаксического анализа строки пользовательского агента (я вставлял содержимое chrome.browser ниже), что предполагает, что Request.Browser.MajorVersion должен соответствовать значению в строке пользовательского агента. Так что до сих пор не знаю, почему мое локальное приложение возвращает 44 как это значение.

<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>

ОБНОВЛЕНИЕ 3

Я, наконец, дошел до сути. Оказывается, приложение, которое я отлаживал, использовало стороннюю службу под названием 51 Degrees, которая перехватывает запрос и применяет собственный анализ запроса заголовок, в этом случае с использованием базы данных, установленной локально на сервере приложений. Эта база данных устарела и, следовательно, создает странные результаты для последних версий браузера. Мои данные в обновлении 2 выше действительны для приложений ASP.NET для ванилин, но это объясняет, почему мои результаты расходились с тестовой средой ванили. Спасибо всем, кто пощадил время, чтобы помочь мне расследовать это.

4b9b3361