gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 4 移动显示模式停止工作

转载 作者:行者123 更新时间:2023-12-03 10:04:05 27 4
gpt4 key购买 nike

ASP.NET MVC 4 中的移动显示模式在正常运行大约一小时后停止提供正确的 View ,尽管浏览器覆盖正确检测到被覆盖的移动设备。

回收应用程序池可以暂时解决问题。

新的浏览器覆盖功能正确地允许移动设备查看站点的桌面版本,反之亦然。但是在大约一个小时的正常运行时间之后,不再为移动设备呈现移动 View ;仅呈现默认桌面 Razor 模板。唯一的解决方法是回收应用程序池。

奇怪的是,浏览器覆盖 cookie 继续起作用。高手_Layout.cshtml模板根据 ViewContext.HttpContext.GetOverriddenBrowser().IsMobileDevice 的值正确显示“移动”或“桌面”文本,但仍然呈现错误的 View 。这让我相信问题出在 DisplayModes 上。

有问题的操作没有被缓存:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

我正在使用 51Degrees 进行移动检测,但我认为这不会影响覆盖的移动检测。这是 DisplayModes 中的错误吗? ASP.NET MVC 4 Beta & Developer Preview 的功能,还是我做错了什么?

这是我的 DisplayModes设置在 Application_Start :
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
ContextCondition = context =>
context.GetOverriddenBrowser().IsMobileDevice
&& (context.Request.UserAgent.IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0
|| context.Request.UserAgent.IndexOf("Android", StringComparison.OrdinalIgnoreCase) >= 0
|| !context.Request.Browser.IsMobileDevice)
});

/* Looks complicated, but renders Home.iPhone.cshtml if the overriding browser is
mobile or if the "real" browser is on an iPhone or Android. This falls through
to the next instance Home.Mobile.cshtml for more basic phones like BlackBerry.
*/

DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("Mobile")
{
ContextCondition = context =>
context.GetOverriddenBrowser().IsMobileDevice
});

最佳答案

这是 MVC 4 中的一个已知问题(Codeplex:#280: Multiple DisplayModes - Caching error, will show wrong View)。这将在 MVC 的下一个版本中修复。

同时,您可以在此处安装解决方法包:http://nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes .

对于大多数应用程序,只需安装此软件包即可解决问题。

对于某些自定义注册 View 引擎集合的应用程序,您应该确保引用 Microsoft.Web.Mvc.FixedRazorViewEngine Microsoft.Web.Mvc.FixedWebFormViewEngine , 而不是默认的 View 引擎实现。

关于asp.net-mvc - ASP.NET MVC 4 移动显示模式停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9354188/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com