我正在编写vb.net svg工作流查看器,但需要执行浏览器检测以查看是否应恢复为VML或是否支持SVG。我们的目标浏览器是IE,我知道要检测VB中的浏览器版本,您可以执行以下操作:
Dim myBrowserCaps As System.Web.HttpBrowserCapabilities = Request.Browser
If (CType(myBrowserCaps, System.Web.Configuration.HttpCapabilitiesBase)).Browser.ToUpper().IndexOf("IE") >= 0 Then
labelText = "Browser is Internet Explorer."
Else
labelText = "Browser is not Internet Explorer."
End If
或类似的东西。
问题是,虽然我可以直接从.aspx页面检测到浏览器和UserAgent字符串,但是当我将相同的代码放入页面上Web部件所引用的类中时(是Web部件,它是旧产品),我得到了一个错误。该webpart被许多页面引用,这就是为什么我要在类中而不是页面上检测浏览器。
Dim Browser As HttpBrowserCapabilities = Request.Browser
If Browser.Browser = "IE" Then
'IE Junk
End If
错误很简单 "'Request' is not declared. It may be inaccessible due to its protection level".
这段代码是直接从MSDN文档中复制的,在我的生命中,我找不到任何地方可以解释如何或是否可以从类中完成此操作。我已经浏览了Stack,也没有浏览过他们的文档。
我已经尝试过了HttpRequest.Browser
,但是这让我无处可去。
所以,我的两个问题是...
编辑
最初,我尝试使用当前上下文,但是我做错了。我试过了:
Dim browser as HttpBrowserCapabilities = HttpContext.Request.Browser
应该是什么时候:
Dim browser as HttpBrowserCapabilities = HttpContext.Current.Request.Browser
所以我在语法上(和理解上)错了
我认为该问题可能仍然会有所帮助,因为我找不到在其他任何地方都可以复制的问题。
谢谢大家!
根据SLaks注释,必须传递HttpContext才能从请求访问浏览器。我最终使用。
Dim context As HttpContext = HttpContext.Current
Dim Browser As HttpBrowserCapabilities = context.Request.Browser
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句