如何在 asp.net 中检测新的Microsoft浏览器"Edge"



在asp.net中,使用此构造,我如何检测新的Microsoft"Edge"浏览器?

    Dim wrkBrowser As String = ""
    Dim wrkBrowserType As String = HttpContext.Current.Request.Browser.Type
    If InStr(wrkBrowserType, "Chrome") <> 0 Then
        wrkBrowser = "Chrome"
    End If
    If InStr(wrkBrowserType, "MSIE") <> 0 Then
        wrkBrowser = "IE"
    End If
    If InStr(wrkBrowserType, "FireFox") <> 0 Then
        wrkBrowser = "FF"
    End If

我知道答案有点晚了,但我到处找都找不到,只能自己写。以下代码将允许Request.Browser变量返回Edge和Edge版本,而不是Chrome。

将以下代码段添加到App_Browsers文件夹中的.browser文件(如platform.browser(将导致其返回Edge和版本。

<browser id="Edge" parentID="Chrome">
  <identification>
    <userAgent match="Edge/(?'version'(?'major'd+)(?'minor'.d+))" />
  </identification>
  <capabilities>
    <capability name="browser" value="Edge" />
    <capability name="version" value="${version}" />
    <capability name="majorversion" value="${major}" />
    <capability name="minorversion" value="${minor}" />
  </capabilities>
</browser>

正如Joey所提到的,用户代理字符串是您想要查看的。Request.Browser的属性不包含任何特定于Edge的内容,但您可以使用HttpContext.Current.Request.UserAgent获取用户代理字符串,并使用.IndexOf("Edge"(进行搜索。

在Windows NT 10.0 Microsoft Edge上,Request.UserAgent如下,而不是Edge

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66

我不擅长任何.NET,但阅读您的代码后,返回的值似乎

HttpContext.Current.Request.Browser.Type

是用户代理。

您可以在此页面上找到有关Edge的用户代理的信息。

边缘的用户代理:

Mozilla/5.0(Windows NT 10.0;WOW64(AppleWebKit/537.36(KHTML,类似Gecko(Chrome/39.0271.71 Safari/537.36 Edge/12.0

请注意,该值可以根据移动设备、xbox等进行更改。

因此,在您的情况下,请尝试对"Edge"进行检查

您需要像这样检查UserAgent:

if (Regex.IsMatch(HttpContext.Request.UserAgent, @"Edge/d+"))
{
    wrkBrowser = "Edge"
}

如果您要检查多个浏览器,请注意检查顺序,因为许多浏览器都喜欢在其UserAgent字符串中提及其他浏览器。

这是Edge当前的用户代理字符串:

Mozilla/5.0(Windows NT 10.0;Win64;x64(AppleWebKit/537.36(KHTML,类似壁虎(Chrome浏览器/51.02704.79 Safari/537.36 Edge浏览器/14.14393

HttpContext.Current.Request.UserAgent.DefaultIfEmpty((.Contains("Edge"(

DefaultIfEmpty((是我编写的一个扩展方法,它确保字符串为空时字符串为空。

为了与浏览器兼容,您可以使用此代码。此方法返回浏览器名称和版本:

private string GetBrowserNameWithVersion
{
    var userAgent = Request.UserAgent;
    var browserWithVersion = "";
    if (userAgent.IndexOf("Edge") > -1)
    {
        //Edge
        browserWithVersion = "Edge Browser Version : " + userAgent.Split(new string[] { "Edge/" }, StringSplitOptions.None)[1].Split('.')[0];
    }
    else if (userAgent.IndexOf("Chrome") > -1)
    {
        //Chrome
        browserWithVersion = "Chrome Browser Version : " + userAgent.Split(new string[] { "Chrome/" }, StringSplitOptions.None)[1].Split('.')[0];
    }
    else if (userAgent.IndexOf("Safari") > -1)
    {
        //Safari
        browserWithVersion = "Safari Browser Version : " + userAgent.Split(new string[] { "Safari/" }, StringSplitOptions.None)[1].Split('.')[0];
    }
    else if (userAgent.IndexOf("Firefox") > -1)
    {
        //Firefox
        browserWithVersion = "Firefox Browser Version : " + userAgent.Split(new string[] { "Firefox/" }, StringSplitOptions.None)[1].Split('.')[0];
    }
    else if (userAgent.IndexOf("rv") > -1)
    {
        //IE11
        browserWithVersion = "Internet Explorer Browser Version : " + userAgent.Split(new string[] { "rv:" }, StringSplitOptions.None)[1].Split('.')[0];
    }
    else if (userAgent.IndexOf("MSIE") > -1)
    {
        //IE6-10
        browserWithVersion = "Internet Explorer Browser  Version : " + userAgent.Split(new string[] { "MSIE" }, StringSplitOptions.None)[1].Split('.')[0];                
    }
    else if (userAgent.IndexOf("Other") > -1)
    {
        //Other
        browserWithVersion = "Other Browser Version : " + userAgent.Split(new string[] { "Other" }, StringSplitOptions.None)[1].Split('.')[0];
    }
    return browserWithVersion;
}

相关内容

最新更新