こんにちは、最近 mvc 4 に変換され、モバイル ビューが追加された MVC 3 アプリケーションがあります。モバイル用のディスプレイモードをタブレット用のデスクトップビューで追加したいと思います (主にここからのトラフィック)。
私は自分のコードでこのようにしています
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)
});
以下のように、出力キャッシュの varybycustom を設定します。
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);
}
モバイルとデスクトップの両方で同じ URL を使用しています。
問題: 問題は、アプリを Azure にデプロイした後です。1 時間後、モバイルはいくつかの URL のデスクトップ ビューを取得します。矛盾があります。
私が間違っている場所で誰かが私を助けることができますか?outputcacheをオフにしても同じ問題が発生しました。