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

时间:2015-07-04 18:04:56

标签: asp.net browser

在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

7 个答案:

答案 0 :(得分:9)

我知道答案有点晚了,但我搜遍了整个地方,从未找到过这个,不得不自己写。以下代码将允许Request.Browser变量返回Edge和Edge Version而不是Chrome。

将以下代码段添加到.browser文件(例如app_Browsers文件夹中的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>

答案 1 :(得分:3)

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

答案 2 :(得分:1)

我不擅长任何.NET,但是阅读你的代码,在我看来,

返回的值
HttpContext.Current.Request.Browser.Type

是用户代理。

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

边缘的用户代理:

  

Mozilla / 5.0(Windows NT 10.0; WOW64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 39.0.2171.71 Safari / 537.36 Edge / 12.0

请注意,该值可能会根据移动设备,xbox等进行更改

所以在你的情况下,尝试检查“边缘”

答案 3 :(得分:0)

您需要像这样检查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,   像Gecko)Chrome / 51.0.2704.79 Safari / 537.36 Edge / 14.14393

答案 4 :(得分:0)

HttpContext.Current.Request.UserAgent.DefaultIfEmpty()。包含( “边缘”)

DefaultIfEmpty()是我写的一个扩展方法,如果字符串为null,则确保空字符串。

答案 5 :(得分:0)

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

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;

}

答案 6 :(得分:0)

在 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