.Net-Core 从 httpContext 获取 HttpBrowserCapabilities

.Net-Core get HttpBrowserCapabilities from httpContext

我想在 .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。我如何让这段代码重新调整正确的值?

知道了!

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

因此我必须检查 userAgent 是否包含值 (userAgent.Any()) 并使用以下代码

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