我有ASP.NET MVC 4应用程序,并且在服务器端检测浏览器时遇到了问题。 Opera客户端用户代理 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36 OPR/25.0.1614.63"
发送请求,但服务器端浏览器名称定义为“Chrome”,这是错误的。服务器端错误的浏览器检测
var browserName = Request.Browser.Browser;
我想browserName
定义为“Opera”。 我试过重写对象Request.Browser
的创建。
解决方案1:
我创建 “browserCaps.config” 文件并添加XML元素的歌剧到这个文件。
<browserCaps>
<use var="HTTP_USER_AGENT" />
...
<case match="Chrome/\d+\.\d+\.\d+.\d+\sSafari/\d+\.\d+\sOPR/(?'version'(?'major'\d+)(?'minor'\.\d+)\.\d+.\d+)">
browser=Opera
version=${version}
majorversion=${major}
minorversion=${minor}
</case>
...
</browserCaps>
它工作正常,但我不喜欢这个解决方案,因为它覆盖了所有浏览器的功能,我需要手动更新它。
解决方案2:
我添加了一个文件 “opera.browser” 文件夹 “App_Browsers文件”:
<browsers>
<browser id="Opera" parentID="Chrome">
<identification>
<userAgent match="OPR/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)" />
</identification>
<capabilities>
<capability name="browser" value="Opera" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="type" value="Opera${major}" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
</browsers>
我发出第一个请求,距离Opera的userAgent,它的工作和browserName
定义为“Opera”,但随后我发送了来自Chrome userAgent的第二个请求,并将browserName
仍定义为“Opera”。我究竟做错了什么?
尝试看看这个,可帮助您 http://stackoverflow.com/questions/13836636/detect-internet-explorer-browser-version-problems – HaveNoDisplayName 2014-10-29 18:23:48
尝试这一个 - https://开头browserdetection。 codeplex.com/ – 2014-12-30 06:43:27