अनुरोध कर रहा है मैं अपने पृष्ठों का प्रदर्शन करने के लिए एक अनुकूल दृष्टिकोण के रूप में मेरी MVC साइट पर 51 डिग्री का उपयोग कर रहा हूँ। सब ठीक काम कर रहे हैं।जांच करें कि एक मोबाइल डिवाइस डेस्कटॉप साइट
मैं हाल ही में उत्पादन कैशिंग जोड़ लिया है और मैं VaryByCustom
का उपयोग चाहे वह मोबाइल या डेस्कटॉप है की जाँच करने के:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
// this is for the output cache
if (context != null)
{
switch (custom)
{
case "Mobile":
return GetMobileCustomString(context);
}
}
return base.GetVaryByCustomString(context, custom);
}
private static string GetMobileCustomString(HttpContext context)
{
if (context.Request.Browser.IsMobileDevice)
{
return "IsMobile";
}
else
{
return "IsDesktop";
}
}
हालांकि मुझे लगता है कि अगर पहली मोबाइल उपयोगकर्ता साइट ब्राउज़ करने के लिए किसी समस्या का सामना किया है अनुरोध किया है डेस्कटॉप संस्करण, यह सभी मोबाइल उपयोगकर्ताओं के लिए कैश किया जाएगा।
मैं GetMobileCustomString
बदलने के लिए अगर यह एक मोबाइल है एक डेस्कटॉप साइट अनुरोध करने के लिए एक जांच को शामिल करना होगा। क्या इसे करने का कोई तरीका है?
अद्यतन
के रूप में एक इनाम इस पर खोल दिया गया है, मैंने सोचा कि मैं एक अद्यतन की पेशकश करेगा:
सबसे पहले, यह नहीं था के रूप में मैं था पहले लोड डेस्कटॉप पृष्ठ के कारण कैश हो जाने की शुरुआत में सोचा, इसलिए इस पर बहुत सारी खोज, शोध और परीक्षण किया गया है, मुझे लगता है कि डेस्कटॉप पेज को मोबाइल संस्करण के लिए कैश नहीं किया जाना चाहिए (यदि आप एमवीसी 5 पर हैं)। मैं कोड के माध्यम से जब एक मोबाइल अनुरोध कर कदम रखा है और जब यह कस्टम के हिसाब से बदलती करने के लिए हो जाता है, यह context.Request.Browser.IsMobileDevice
false
के रूप में दिखाता है।
यह सुनिश्चित नहीं है कि डेस्कटॉप साइट को मोबाइल साइट के लिए कैश किया जा रहा है - शायद यह bug in MVC 4 से हैंगओवर है। यह सिर्फ (यानी, एक दिन यह ठीक हो जाएगा और फिर एक और दिन यह किसी कारण से डेस्कटॉप साइट की सेवा की जाएगी) और ऐप पूल हमेशा यह ठीक कर देंगे रीसाइक्लिंग यादृच्छिक हो रहा है।
मैंने यह भी पाया मैं का उपयोग करके ओवरराइड ब्राउज़र मिल सकता है कि:
using System.Web.Wepages;
context.Request.RequestContext.HttpContext.GetOverriddenBrowser();
लेकिन यह बहुत उपयोग होने के लिए नहीं मालूम था
क्या आपके पास डेस्कटॉप/मोबाइल ऐप्स और अनुरोध बदलने की अनुमति है? हो सकता है कि आप http अनुरोध के उपयोगकर्ता-एजेंट को सेट कर सकें और इससे पढ़ सकें। –
जब मैं खोज रहा था, तो कोई रास्ता नहीं बनाया गया है, मैं इस पर आया जहां आप ओवरराइड ब्राउज़र को स्पष्ट रूप से सेट कर सकते हैं: http://stackoverflow.com/questions/16080593/mvc4-force-mobile-site-for-all- अनुरोध-डेस्कटॉप भी शामिल है। यदि आप इसे सेट कर सकते हैं, तो इसे पाने का कोई तरीका नहीं है? – Pete
हम्म, उस ब्राउजर ओवरराइड में और अधिक देखा, ऐसा लगता है कि ओवरराइड सिर्फ एक कॉन्स स्ट्रिंग द्वारा सेट किया गया है: https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web .WebPages/BrowserHelpers.cs – Pete