asp.net-mvc – ASP.NET MVC 4移动显示模式停止工作
|
ASP.NET MVC 4中的移动显示模式在大约一个小时的正常运行时间后停止提供正确的视图,尽管浏览器覆盖正确地检测到被覆盖的移动设备。 回收应用程序池临时解决问题。 新的浏览器覆盖功能正确地允许移动设备查看网站的桌面版本,反之亦然。但在大约一个小时的正常运行时间后,移动视图不再为移动设备呈现;仅渲染默认桌面Razor模板。唯一的解决方案是回收应用程序池。 奇怪的是,浏览器覆盖cookie继续工作。主_Layout.cshtml模板根据ViewContext.HttpContext.GetOverriddenBrowser()。IsMobileDevice的值正确显示“移动”或“桌面”文本,但是错误的视图仍在呈现。这使我相信问题在于DisplayModes。 有问题的操作未缓存: [OutputCache(NoStore = true,Duration = 0,VaryByParam = "*")] 我使用51Degrees的移动检测,但我不认为这应该影响重写的移动检测。这是一个Bug的DisplayModes功能为ASP.NET MVC 4 Beta&开发者预览,还是我做别的什么错了? 这里是我的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。 对于大多数应用程序,只需安装此软件包即可解决此问题。 对于定制注册视图引擎集合的一些应用程序,您应该确保引用Microsoft.Web.Mvc.FixedRazorViewEngine或Microsoft.Web.Mvc.FixedWebFormViewEngine,而不是默认的视图引擎实现。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- IIS如何处理ASP.net MVC请求?
- asp.net – 两个DLL中都存在“ModelClientValidationRule”
- model-view-controller – 比较Dates DataAnnotations验证a
- .net – 设置页面标题不起作用
- asp.net – 检查Active Directory密码是否与cookie不同
- asp.net-mvc – 使用MiniProfiler与MVC 5
- asp.net – 当绑定值包含冒号时,如何绑定GridView HyperLin
- ASP.NET MVC3中基于权限的授权
- asp.net上传文件到数据库的解决方案
- asp.net-mvc – 如何重定向HTTP到HTTPS在MVC应用程序(IIS7.
- asp.net-mvc – ASP.NET MVC 4 – 301重定向Rout
- 获取当前的ASP.NET机器密钥
- asp.net如何跳转到其他文件夹下的页面
- asp.net – 以编程方式将CSS类添加到ListItem
- asp.net-mvc-3 – 是否可能获得一个ASP.NET MVC
- asp.net-mvc-2 – EditorFor – 传入字典的模型项
- asp.net-mvc – 如何使用ASP.NET 5 MVC保护Web A
- asp.net – 嵌套的Repeater和SqlDataSource参数
- asp.net – ASP .NET 5 MVC 6身份3角色索赔组[已
- asp.net – 在所选数据源上找不到具有该名称的字
