【问题标题】:Why do mobile views in ASP.NET MVC display differently on different servers?为什么 ASP.NET MVC 中的移动视图在不同的服务器上显示不同?
【发布时间】:2012-05-08 07:27:46
【问题描述】:

我正在使用新的 ASP.NET MVC 4 beta 并尝试创建一个主要适用于响应式设计的系统,但对于一个特定的视图,我使用移动视图来为移动设备呈现特定的视图。

我的结构很简单,我有一个 Show.cshtml,然后我有一个 Show.mobile.cshtml。

如果我通过 IIS Express 在我的开发机器上提供我的网站,则此视图在 iPad、iPhone、Android 手机和移动 Opera 上正确显示,如果我在我的开发机器上将本地发布到 IIS 7.5,它也可以正常工作.

当我们部署到实时服务器时,问题就来了,我们尝试在两个不同的服务器上进行部署。然后移动视图将只提供给 iPhone,而不提供给其他移动设备。这是一贯如此。我们的服务器设置为 Windows 2003/IIS6 和 Windows 2008 R2/IIS7.5,两者的工作方式相同,只有 iPhone 提供移动视图。

这可能是什么原因?

我没有为此在 global.asax 中添加任何自定义内容。

更新

经过更多研究,我似乎很清楚 DisplayMode 和移动视图的默认行为取决于 Request.Browser.IsMobileDevice 标志。反过来,此标志似乎依赖于 .NET Framework 文件夹的 Config/Browsers 文件夹中的 .browser 文件。

在我的开发机器上,我的 .browser 文件与我部署到的服务器上的文件不同。到目前为止,我已尝试将我的机器上的那些部署在 Web 应用程序的 App_Browsers 文件夹中,但这并没有解决我的问题。这可能是要走的路吗?

【问题讨论】:

  • 你试过吐出你的用户代理字符串吗?我想知道 IIS 是在搞乱它还是以不同的方式解决它。
  • 在我看来,DisplayMode 的默认实例取决于框架文件夹的 Config\Browsers 文件夹中定义的浏览器。更多的研究表明,这些在不同的机器上有所不同。这是通过 Wep Platform Installer 更新的东西吗?

标签: asp.net asp.net-mvc mobile asp.net-mvc-4


【解决方案1】:

这不是您问题的完整答案,但我认为它仍然会有所帮助。

根据我的经验,ASP.NET 不太擅长解决浏览器功能。所以,我可以推荐查看51Degrees.Mobi Foundation。 Steven Sanderson 对此有一篇不错的博文:

Using 51Degrees.Mobi Foundation for accurate mobile browser detection on ASP.NET MVC 3

我不完全确定,但您应该能够轻松地将其连接到 ASP.NET MVC 4 DisplayMode 基础架构。这是一个很好的资源:

51Degrees.mobi and MVC4

【讨论】:

  • 我决定走这条路,但我认为这不是我问题的完整答案。 51Degrees 对 IsMobileDevice 的解析似乎比默认实现好很多,所以我暂时使用它。
  • @Cros 是的,正如我所指出的那样,这不是您问题的完整答案。
【解决方案2】:

我认为我在下面给出的解决方案就是答案(它工作了一会儿),但过了一会儿它仍然切换到错误的视图。

和其他互联网一样,我安装了51 Degrees from Nuget 这是完美的工作,并且很容易设置


(以下对我不起作用,但也许对你有用) http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes

看起来这是一个已知的错误:http://aspnetwebstack.codeplex.com/workitem/280?PendingVoteId=280

根据上面的 codeplex 链接,请记住确保这一点:

对于一小部分自定义注册视图列表的项目 引擎(例如,在 Global.asax 中),你应该确保你 正在引用 Microsoft.Web.Mvc.FixedRazorViewEngine 或 Microsoft.Web.Mvc.FixedWebFormViewEngine,而不是那些 在核心运行时二进制文件中发布

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多