use*_*719 4 asp.net-mvc mobile outputcache viewengine
嗨,我有一个MVC 3应用程序,最近转换为mvc 4并添加了移动视图.我想为iPad专门为平板电脑添加桌面视图的移动显示模式(主要来自此处的流量).
我在我的代码中就是这样的
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode()
{
ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("iPad", StringComparison.OrdinalIgnoreCase) >= 0)
});
DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("Mobile")
{
ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("Mobile", StringComparison.OrdinalIgnoreCase) >= 0)
});
Run Code Online (Sandbox Code Playgroud)
并设置输出缓存changebycustom如下所示
public override string GetVaryByCustomString(HttpContext context, string custom)
{
string strUserAgent = context.Request.UserAgent.ToLower();
if (strUserAgent.Contains("ipad"))
{
return base.GetVaryByCustomString(context, custom);
}
if (Request.Browser.IsMobileDevice)
{
return "mobile";
}
return base.GetVaryByCustomString(context, custom);
}
Run Code Online (Sandbox Code Playgroud)
我在移动设备和桌面设备上都使用相同的网址.
问题: 问题是在将应用程序部署到azure之后.1小时后,移动设备可以获取几个网址的桌面视图.存在不一致.
任何人都可以帮助我,我错了.我甚至关闭了 outputcache仍然是同样的问题.
这是一个已知问题,我们最近发布了针对MVC 4的解决方法NuGet包:http: //nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes.
解决方法是简单地将此NuGet包安装到您的项目中.但是,如果您的应用程序自定义已注册视图引擎的集合,则应确保引用
Microsoft.Web.Mvc.FixedRazorViewEngine
Run Code Online (Sandbox Code Playgroud)
要么
Microsoft.Web.Mvc.FixedWebFormViewEngine
Run Code Online (Sandbox Code Playgroud)
而不是默认的视图引擎实现.