2017-10-09 341 views
0

我想在.net-core中使用HttpBrowserCapabilities。我試過以下方法:.Net-Core從httpContext獲取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。我怎樣才能讓這段代碼重新獲得正確的值?

回答

0

Got it!

userAgent的類型爲Microsoft.Extensions.Primitives.StringValues。 但HttpBrowserCapabilities需要一個字符串作爲輸入參數。

因此我不得不檢查是否userAgent包含一個值(userAgent.Any()),並使用下面的代碼

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

而不是'ToArray的()[0]''將第一()'不工作? – Lloyd

+0

ty :) :)你是對的 – osanger