【问题标题】:ASP.NET browser definition file not workingASP.NET 浏览器定义文件不起作用
【发布时间】:2014-04-07 19:30:21
【问题描述】:

我正在尝试检测一些较旧的硬件并使用浏览器定义文件将其标记为 isMobileDevice。这是 .NET 4.0 +

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

所以我在我的 App_Browsers 文件夹中添加了一个名为 WinCE.browser 的浏览器文件。单步执行代码,我看到它检测到它为 IE6to9,因此我将以下内容放入我的文件中,以检测用户代理何时具有 Windows CE,它应该匹配它并将 id 设置为 WinCE 和 isMobileBrowser = true 但它不工作。我在这里缺少什么才能使其正常工作。

   <!--
    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>

【问题讨论】:

    标签: c# asp.net browser


    【解决方案1】:

    终于找到问题了。显然存在一些错误,自 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 文件后,我注意到如果我发现对其中一个文件的更改没有生效,那么只需修改任何其他文件的日期似乎就可以解决问题。

    【讨论】:

    • 我认为将其标记为已接受的答案是有益的——我刚刚为这个问题浪费了将近半天的时间,只是在搜索的后期才发现这个问题。跨度>
    猜你喜欢
    • 2012-04-06
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多