有没有人在asp.net中使用HttpBrowserCapabilities

时间:2010-06-18 14:36:29

标签: asp.net httpbrowsercapabilities

HttpBrowserCapabilities browse = Request.Browser; 似乎只为所有其他浏览器带回IE或Netscape。

我更新了具有asp.net c#的开发者电脑上的C:\ WINDOWS \ system32 \ inetsrv browscap.ini文件。

我的要求是将客户端浏览器捕获到服务器端代码中。

感谢。

4 个答案:

答案 0 :(得分:2)

http://owenbrady.net/browsercaps/这是您添加到web.config的xml文件,它将详细信息提供给browsercapabilities结构。这应该做你想要的。

编辑:我只在IIS7和Asp.Net 3.5上测试了这个。

答案 1 :(得分:2)

这是Dot.net的1.1版本

http://owenbrady.net/browsercaps/CodeProject.xml

您必须将其复制到web.config中的适当区域。

答案 2 :(得分:1)

看一下App_Browsers文件夹,你可以添加.browser文件来扩展ASP.net中Request.Browser对象的检测。

例如:要检测BlackBerry,您需要以下规则: blackberry.browser添加到App_Browsers文件夹中:

<browsers>    
  <browser id="BlackBerry" parentID="Default">
    <identification>
      <userAgent match="BlackBerry(?'model'\d+)/(?'version'((?'major'\d+).(?'minor'\d+).(?'other'\d+)))" />
    </identification>
    <capabilities>
      <capability name="browser"     value="BlackBerry" />
      <capability name="isMobileDevice"     value="true" />
      <capability name="javascript"     value="true" />
      <capability name="ecmascriptversion"     value="1.3" />
      <capability name="version"     value="${version}" />
      <capability name="majorVersion"     value="${major}" />
      <capability name="minorVersion"     value="${minor}" />
      <capability name="supportsCss"     value="true" />
      <capability name="css1"                            value="true" />
      <capability name="css2"                                    value="true" />
      <capability name="frames"     value="false" />
      <capability name="cookies"     value="true" />
      <capability name="mobileDeviceManufacturer"   value="RIM" />
      <capability name="isColor"                         value="true" />
      <capability name="supportsBold"                    value="true" />
      <capability name="supportsFontName"                value="true" />
      <capability name="supportsImageSubmit"             value="true" />
      <capability name="supportsItalic"                  value="true" />
      <capability name="preferredImageMime"              value="image/jpeg" />
    </capabilities>
  </browser>
</browsers>

现在你可以永远添加你自己的,但是有一个来自微软的项目在他们的文件中有数千个设备:MDBF,但他们最近关闭了这个项目(但最后一个版本仍可访问) 。 所以替代方案是包括51degrees.codeplex.com它并不像MDBF那么容易,但应该完成工作。

答案 3 :(得分:1)

使用.Net 3.5,我已经将HttpBrowserCapabilities与web.config的browsercaps部分一起使用了。这就是我所拥有的,在同一台机器上的IE 8,Firefox,Chrome和Safari中验证。

        System.Web.HttpBrowserCapabilities browser = Request.Browser;

        BrowserNm.Text = browser.Browser;
        BrowserVer.Text = browser.Version;
        Platform.Text = browser.Platform;

我对浏览器检测的要求与此类似,但我们根本不想使用browsercaps。如果你打算使用browsercaps,你也可以编写正则表达式来识别浏览器,这是我们的第一个选择,我讨厌。

我正在研究的三个属性是IsMobileDevice,MobileDeviceManufacturer和MobileDeviceModel。如果我知道那些工作,我就是金。