2011-11-07 5 views
7

लोग,एएसपी.नेट एमवीसी 3: वर्चुअल निर्देशिका में ऐप को स्थानांतरित किया गया। मुझे क्या बदलना है?

मैं एक एमवीसी 3 ऐप पर काम कर रहा हूं। मैं वीएस 2010 के अंतर्निर्मित वेब सर्वर का उपयोग कर रहा था। आज, विभिन्न कारणों से, मुझे इसे वर्चुअल निर्देशिका में स्थानांतरित करने और आईआईएस 7 के तहत चलाने के लिए कहा गया था, फिर भी मेरे विकास पीसी पर।

अब यह कहा गया है कि इसका स्थानीय URL "localhost: 12345" के विपरीत "लोकलहोस्ट/MyVirtualDirectory" है, मुझे रूटिंग कार्य करने के लिए क्या बदलने की आवश्यकता है, और कहां?

मैं किसी भी कच्चे HTML एंकर टैग या रीडायरेक्ट का उपयोग नहीं कर रहा हूं, बस @ Html.ActionLink और इसी तरह। मैंने जो पढ़ा है, उसके अनुसार, अगर मैं एमवीसी तरीके से काम कर रहा हूं, तो यह परिवर्तन पारदर्शी होना चाहिए था।

लेकिन शुरुआत में, पोस्ट-प्रमाणीकरण पुनर्निर्देशन विफल रहता है। सफल प्रमाणीकरण पर, यह

this.RedirectToAction("index", "Home") 

आप सही अनुमान लगाया का परिणाम वापस जाने के लिए चाहिए था: के बजाय "/ MyVirtualDirectory/होम" रीडायरेक्शन "/ होम" को जाता है। जो विफल रहता है।

तो कुछ याद आ रही है जिसे स्थापित करने की आवश्यकता है। यह क्या है?

धन्यवाद, सब कुछ।

+0

क्या आपके 'RegisterRoutes' की तरह अपने Global.asax में लग रहा है करता है? –

+0

आपने शायद आईआईएस को गलत तरीके से कॉन्फ़िगर किया है। यह पूरी तरह से पारदर्शी होना चाहिए। –

+0

@DarinDimitrov ठीक है, मैं उस पर विश्वास करने के लिए तैयार हूँ। क्या एमवीसी ऐप्स को वेबफॉर्म ऐप्स से अलग-अलग सेट अप करना होगा? –

उत्तर

3

आईआईएस में, अपनी वर्चुअल निर्देशिका और "एप्लिकेशन में कनवर्ट करें" चुनें।

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

तर्क: इसके अलावा, अगर आप अपने Global.asax में डिफ़ॉल्ट मार्ग नक्शा उपयोग कर रहे हैं यह कुछ इस तरह पढ़ना चाहिए आप किसी अन्य अनुप्रयोग की एक उप-निर्देशिका में अपने MVC आवेदन डाल तो आईआईएस पर विचार करेगी अपने एमवीसी अनुप्रयोग की जड़ की बजाय उस अन्य एप्लिकेशन की जड़। अगर ऐसा व्यवहार है कि आप चाहते हैं है (संभावना नहीं) तो आप अपने Global.asax संशोधित करने के लिए है कि लेने के लिए खाते में की जरूरत है:

routes.MapRoute(
    "Default", // Route name 
    "MyVirtualDirectory/{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 
+0

बहुत बहुत धन्यवाद। हालांकि, आईआईएस के अनुसार मेरी आभासी निर्देशिका पहले से ही एक आवेदन है। मुझे आईआईएस 7.5 मिल गया है, और डिफ़ॉल्ट वेब साइट सामग्री के तहत मेरी वर्चुअल निर्देशिका में एप्लिकेशन का "प्रकार" है। –

+0

ठीक है, जब आपने अपने प्रश्न में वर्चुअल निर्देशिका लिखी थी तो मैंने इसे एक संभावित संकेतक के रूप में लिया था कि आपने निर्देशिका को एप्लिकेशन के रूप में निर्दिष्ट नहीं किया था। आप एप पूल सेटिंग्स आदि देख सकते हैं, लेकिन जैसा कि पहले उल्लेख किया गया है, यह शायद serverfault.com प्रश्न बन जाएगा। –

+0

मुझे अपनी समस्या मिली, जो एक रीडायरेक्ट कथन में गलत तरीके से व्युत्पन्न यूआरएल बन गया। आपका सवाल पूछने का एक अच्छा जवाब है, हालांकि - मैं वास्तव में क्या हो रहा था इसके बारे में गलत होने लगा। उत्तर देने के लिए बहुत बहुत धन्यवाद! –

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