2012-05-08 11 views
17

मैं नए एएसपी.नेट एमवीसी 4 बीटा का उपयोग कर रहा हूं और एक ऐसी प्रणाली बनाने की कोशिश कर रहा हूं जो ज्यादातर उत्तरदायी डिजाइन के साथ काम करता है, लेकिन एक विशिष्ट दृश्य के लिए मैं मोबाइल उपकरणों के लिए एक विशिष्ट दृश्य प्रस्तुत करने के लिए मोबाइल व्यू का उपयोग कर रहा हूं।एएसपी.नेट एमवीसी में मोबाइल विचार अलग-अलग सर्वरों पर अलग-अलग प्रदर्शन क्यों करते हैं?

मेरी संरचना बस है कि मेरे पास Show.cshtml है और उसके बाद मेरे पास Show.mobile.cshtml है।

यदि मैं अपनी साइट को आईआईएस एक्सप्रेस के माध्यम से अपनी देव मशीन से उपलब्ध कराता हूं तो यह दृश्य आईपैड, आईफ़ोन, एंड्रॉइड फोन और मोबाइल ओपेरा के लिए सही तरीके से प्रदर्शित होता है, और यह भी वही काम करता है यदि मैं अपने देव पर आईआईएस 7.5 में स्थानीय प्रकाशित करता हूं मशीन।

समस्या तब होती है जब हम लाइव सर्वर पर तैनात होते हैं, हमने दो अलग-अलग सर्वरों पर तैनाती करने का प्रयास किया है। फिर मोबाइल व्यू केवल आईफोन, अन्य मोबाइल उपकरणों पर ही काम किया जाएगा। यह लगातार है। हमारे सर्वर सेट अप विंडोज 2003/आईआईएस 6 और विंडोज 2008 आर 2/आईआईएस 7.5 दोनों हैं और यह दोनों पर ही काम करता है, केवल आईफोन को मोबाइल व्यू परोसता है।

इसका कारण क्या हो सकता है?

मैंने इसके लिए global.asax में कुछ भी कस्टम नहीं जोड़ा है।

अद्यतन

कुछ और अनुसंधान के बाद यह मेरे लिए स्पष्ट लगता है कि DisplayMode और मोबाइल विचारों के लिए डिफ़ॉल्ट व्यवहार Request.Browser.IsMobileDevice झंडे पर निर्भर करता है। बदले में यह ध्वज .browser फ़ाइलों पर भरोसा करता है जो .NET Framework फ़ोल्डर के कॉन्फ़िगर/ब्राउज़र-फ़ोल्डर में हैं।

मेरी देव मशीन पर मेरे पास अलग-अलग सर्वर हैं जो सर्वर पर मौजूद हैं, जो मैंने तैनात किए हैं। अब तक मैंने अपनी मशीन पर ऐप_Bरोवर्स-फ़ोल्डर में वेब ऐप को तैनात करने की कोशिश की है, लेकिन इससे मेरी समस्या ठीक नहीं हुई है। क्या यह जाने का रास्ता हो सकता है?

+0

क्या आपने अपना उपयोगकर्ता एजेंट स्ट्रिंग थूकने का प्रयास किया है? मैं सोच रहा हूं कि आईआईएस इसके साथ गड़बड़ कर रहा है या इसे अलग-अलग हल कर रहा है। –

+2

ऐसा लगता है कि डिस्प्लेमोड का डिफ़ॉल्ट उदाहरण ढांचे-फ़ोल्डर के कॉन्फ़िगर \ ब्राउज़र-फ़ोल्डर में परिभाषित ब्राउज़र पर निर्भर है। कुछ और शोध से पता चलता है कि ये विभिन्न मशीनों पर भिन्न हैं। क्या यह ऐसा कुछ है जो वीपी प्लैटफॉर्म इंस्टालर के माध्यम से ऊपर हो जाता है? – Cros

उत्तर

6

यह आपके प्रश्न का पूरा उत्तर नहीं है, लेकिन मुझे लगता है कि यह अभी भी मदद करेगा।

एएसपी.NET मेरे अनुभव में ब्राउज़र क्षमताओं को हल करने में बहुत अच्छा नहीं है। तो, मैं 51Degrees.Mobi Foundation में देखने की अनुशंसा कर सकता हूं। स्टीवन सैंडरसन उस पर एक अच्छा ब्लॉग पोस्ट है:

Using 51Degrees.Mobi Foundation for accurate mobile browser detection on ASP.NET MVC 3

मैं पूरी तरह से यकीन नहीं है, लेकिन आप इस अप ASP.NET MVC 4 DisplayMode बुनियादी सुविधाओं के लिए हुक करने को आसानी से सक्षम होना चाहिए। यहाँ उस पर एक अच्छा संसाधन है:

51Degrees.mobi and MVC4

+1

मैंने इस मार्ग पर जाने का फैसला किया है, लेकिन मेरे विचार के बारे में मेरा पूरा जवाब नहीं है। 51 डिग्री डिफ़ॉल्ट कार्यान्वयन की तुलना में IsMobileDevice को बहुत बेहतर हल करने लगते हैं, इसलिए मैं इसे समय के लिए उपयोग करूँगा। – Cros

+0

@ क्रॉस हां, आपके प्रश्न का पूरा उत्तर नहीं, जैसा कि मैंने भी संकेत दिया था। – tugberk

0

मैं समाधान मैं नीचे दे दिया जवाब (यह एक संक्षिप्त पल के लिए काम किया) था सोचा, लेकिन यह अभी भी कुछ समय के बाद गलत दृश्य करने लगे।

इंटरनेट के बाकी की तरह, मैं स्थापित 51 Degrees from Nuget यह पूरी तरह से काम कर रहा है, और स्थापित करने के लिए बहुत आसान है


(नीचे मेरे लिए काम नहीं करता है, लेकिन हो सकता है वह आपके लिए करता) http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes

ऐसा लगता है कि यह एक ज्ञात बग है: http://aspnetwebstack.codeplex.com/workitem/280?PendingVoteId=280

codeplex लिंक के अनुसार इसके बाद के संस्करण, इस के बारे में सुनिश्चित करने के लिए याद रखें:

परियोजनाओं (उदाहरण के लिए, Global.asax में) पंजीकृत दृश्य इंजन की सूची को अनुकूलित का एक छोटा सेट आप सुनिश्चित करें कि आप Microsoft.Web.Mvc.FixedRazorViewEngine या माइक्रोसॉफ्ट संदर्भित कर रहे हैं बनाने चाहिए। Web.Mvc.FixedWebFormViewEngine, कक्षाओं के बजाय कोर रनटाइम बाइनरी

संबंधित मुद्दे