使用.Net-Core从httpContext获取HttpBrowserCapabilities

4

我想在 .net-core 中使用 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个回答

1

明白了!

userAgent 的类型是 Microsoft.Extensions.Primitives.StringValues。 但是 HttpBrowserCapabilities 期望输入参数为字符串。

因此,我需要检查 userAgent 是否包含值(userAgent.Any()),并使用以下代码:

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

1
使用 First() 而不是 ToArray()[0],这样行吗? - Lloyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接