代码之家  ›  专栏  ›  技术社区  ›  osanger

.Net Core从httpContext获取HttpBrowserCapabilities

  •  4
  • osanger  · 技术社区  · 7 年前

    我想使用 HttpBrowserCapabilities 在里面净核心。我试了以下方法:

    var userAgent = httpContext.Request.Headers["user-agent"];
    var userBrowser = new HttpBrowserCapabilities { Capabilities = new Hashtable { { string.Empty, userAgent } } };
    var factory = new BrowserCapabilitiesFactory();
    factory.ConfigureBrowserCapabilities(new NameValueCollection(), userBrowser);
    var mobileString = userBrowser.IsMobileDevice ? "(mobil)" : string.Empty;
    var browserString = $"{userBrowser.Browser} version {userBrowser.Version} {mobileString} OS: {userBrowser.Platform}";
    

    但是抛出了一个InvalidCastException。我怎样才能让这段代码重新运行正确的值?

    1 回复  |  直到 4 年前
        1
  •  1
  •   osanger    7 年前

    知道了!

    userAgent的类型为 Microsoft.Extensions.Primitives.StringValues . 但是 HttpBrowserCapabilities 需要一个字符串作为输入参数。

    因此我必须检查一下 userAgent userAgent.Any() )并使用以下代码

    var userBrowser = new HttpBrowserCapabilities {Capabilities = new Hashtable {{string.Empty, userAgent.First()}}};