.net移动检测不一致

时间:2013-04-23 15:17:32

标签: asp.net .net

所以,我正试图在.net 4中检测移动请求。

我发现了Request.Browser.IsMobile和Request.Browser.MobileDeviceModel。这在我的Windows 7笔记本电脑开发环境中运行良好。使用我的iPad:IsMobile=trueMobileDeviceModel="IPad"

但是当我在Windows 2008 Server上检查时,我得到IsMobile=falseMobileDeviceModel="Unknown"

在挖掘了一段时间后,我发现这些属性是由.net框架文件夹中的xml文件提供的:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers  然后,我注意到我的笔记本电脑的Browsers \ iphone.xml有ipad信息,而我服务器的相同文件夹和同一文件不包含ipad信息。

<browsers>
    <gateway id="IPhone" parentID="Safari">
      ...
    </gateway>

    <gateway id="IPod" parentID="Safari">
      ...
    </gateway>

    <gateway id="IPad" parentID="Safari">
      <identification>
        <userAgent match="iPad" />
      </identification>

      <capabilities>
        <capability name="isMobileDevice"           value="true" />
        <capability name="mobileDeviceManufacturer" value="Apple" />
        <capability name="mobileDeviceModel"        value="IPad" />
      </capabilities>
    </gateway>
</browsers>

我的第一个是将浏览器文件复制到服务器上。但我想确保这样做是安全和正确的。为什么我的笔记本电脑会有这些额外的设备而不是我的服这是完全相同的.net版本。而且,是否只是在我需要做的事情上复制这些文件?

2 个答案:

答案 0 :(得分:3)

您是否肯定您的笔记本电脑实际上没有安装.NET 4.5?它安装在C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30313中的相同位置,这有点误导。如果您使用的是VS2012,那么您很可能安装了.NET 4.5,这可能会有额外的浏览器配置。

在任何情况下,然后是,您应该能够将此文件移动到您的服务器,或者如果您确定实际上有不匹配的版本,则将服务器升级到.NET 4.5。

答案 1 :(得分:0)

我们必须在我们的生产服务器上执行此操作,因为我们还没有准备好升级到.NET 4.5,但是有浏览器检测问题导致ASP.NET认为IE 10和11不支持JavaScript。解决方法是将.browser文件从.NET 4.5计算机复制到生产Web服务器并重新编译.browser文件。请注意,重新编译不是免费的,因为它会导致IIS重置,从而导致任何用户失败。另请注意,我们已在低集成环境中尝试此操作,然后再将其投入生产。