Hi I have a MVC 3 application, recently converted to mvc 4 and added mobile views. I want to add displaymodes for Mobile with desktop view for tablets specially for iPad(traffic mainly from here).
I have it like this in my code
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)
});
and Set the output cache varybycustom like below
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);
}
I am using same urls for both mobile and desktop.
ISSUE: The Issue is after deploying the app to azure. after 1 hour the mobile gets desktop view for few urls. there is inconsistency.
can anyone help me where i am wrong. I even turned off outputcache still same issue.