C# ASP.NET -如何检测浏览器类型

gr8qqesn  于 5个月前  发布在  .NET
关注(0)|答案(1)|浏览(77)

我输入以下代码检测浏览器类型(IE,FF,Chrome,Edge)从用户使用,使用C# ASPNET。
检测到的浏览器类型工作正常,但我已验证,当代码从Microsoft Edge浏览器获取时,输出为

Browser Capabilities
Type = Chrome94
Name = Chrome
Version = 94.0
Major Version = 94
Minor Version = 0
Platform = WinNT
Is Beta = False
Is Crawler = False
Is AOL = False
Is Win16 = False
Is Win32 = True
Supports Frames = True
Supports Tables = True
Supports Cookies = True
Supports VBScript = False
Supports JavaScript = 3.0
Supports Java Applets = True
Supports ActiveX Controls = False
Supports JavaScript Version = 1.7

字符串
就像使用的浏览器是Google Chrome.一样
有什么问题吗??
下面是我的代码

System.Web.HttpBrowserCapabilities browser = Request.Browser;
string s = "Browser Capabilities\n"
    + "Type = "                    + browser.Type + "\n"
    + "Name = "                    + browser.Browser + "\n"
    + "Version = "                 + browser.Version + "\n"
    + "Major Version = "           + browser.MajorVersion + "\n"
    + "Minor Version = "           + browser.MinorVersion + "\n"
    + "Platform = "                + browser.Platform + "\n"
    + "Is Beta = "                 + browser.Beta + "\n"
    + "Is Crawler = "              + browser.Crawler + "\n"
    + "Is AOL = "                  + browser.AOL + "\n"
    + "Is Win16 = "                + browser.Win16 + "\n"
    + "Is Win32 = "                + browser.Win32 + "\n"
    + "Supports Frames = "         + browser.Frames + "\n"
    + "Supports Tables = "         + browser.Tables + "\n"
    + "Supports Cookies = "        + browser.Cookies + "\n"
    + "Supports VBScript = "       + browser.VBScript + "\n"
    + "Supports JavaScript = "     + 
        browser.EcmaScriptVersion.ToString() + "\n"
    + "Supports Java Applets = "   + browser.JavaApplets + "\n"
    + "Supports ActiveX Controls = " + browser.ActiveXControls 
          + "\n"
    + "Supports JavaScript Version = " +
        browser["JavaScriptVersion"] + "\n";

s4chpxco

s4chpxco1#

这就是我过去的工作:
准确的浏览器检测是使用UserAgent属性,如

HttpContext.Current.Request.Request.UserAgent

字符串
如果您的用户代理包含子字符串“Edg”,如在类似情况下:

"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52"


然后你的浏览器将是Edge。
如果您的用户代理包含“Chrome”,如本例所示:

"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML,like Gecko) Chrome/93.0.4577.82 Safari/537.36"


然后你的浏览器将是Chrome。
对于Firefox来说,就像这样:

"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0"


我过去尝试过的一个属性是这样的:

HttpContext.Current.Request.Browser.Browser


这似乎是一个显而易见的选择,在许多情况下会给予你正确的浏览器,但在Edge浏览器中,它给了我Chrome。所以使用UserAgent字符串是获取ASP.NET HTTP请求的浏览器的最佳方法。

相关问题