ASP.NET浏览器定义文件不起作用

时间:2014-04-07 19:30:21

标签: c# asp.net browser

我试图检测一些旧硬件并将其标记为带有浏览器定义文件的isMobileDevice。这是在.NET 4.0 +

用户代理是Mozilla / 4.0(兼容; MSIE 6.0; Windows CE)

所以我在我的App_Browsers文件夹中添加了一个名为WinCE.browser的浏览器文件。单步执行代码,我发现它已将其检测为IE6to9,因此我将下面的内容放入我的文件中以检测用户代理何时具有Windows CE应该匹配并将id设置为WinCE并且isMobileBrowser = true但是#&# 39;不工作我在这里错过了什么才能让它发挥作用。

   <!--
    You can find existing browser definitions at
    <windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers
-->
<browsers>
    <browser id="WinCE" parentID="IE6to9">
        <identification>
          <userAgent match="Windows CE" />
        </identification>

        <capture>
        </capture>

        <capabilities>
            <capability name="browser" value="Windows CE MSIE" />
            <capability name="isMobileDevice" value="true" />
        </capabilities>
    </browser>
</browsers>

1 个答案:

答案 0 :(得分:4)

终于找到了问题。显然有一些错误,它自2008年以来一直存在

http://forums.asp.net/t/955969.aspx?Mastering+Browser+Definition+Files

错误 你们中的一些人可能一直在尝试这些东西并且仍然说:“它不起作用!”问题是,ASP.NET中存在与编译新浏览器文件相关的错误。虽然Microsoft声明App_Browsers文件夹中的“.browser”文件是动态检测和编译的,但我发现情况并非总是如此。

根据我自己的测试,下面是我发现的一些古怪的行为模式,可以在开发过程中帮助你。

·检测并编译在App_Browsers文件夹中创建的第一个.browser文件没有问题。

·在第一个文件中检测到更改时,未检测到任何其他.browsers文件。

因此,这意味着如果您创建其他.browser文件,则需要在第一个.browser文件上触发更改。您只需使用文本编辑器保存第一个.browser文件,而无需进行任何实际修改即可。这会更改文件的修改日期,这似乎足以让ASP.NET重新编译所有.browser文件。在创建了几个.browser文件之后,我注意到如果我发现其中一个文件的更改没有生效,那么只需修改任何其他文件的日期就好了。