2010-03-27 21 views
9

मैंने ASP.Net MVC routing legacy URLs passing querystring Ids to controller actions और विरासत यूआरएल रूटिंग के लिए कई अन्य समान पदों को देखा है, लेकिन मुझे त्रुटि से पहले नहीं मिल सकता है "रूटडेटा में एक गैर- खाली स्ट्रिंग मान। " लाइन पर इसे देखकर मुझे मेरी समस्या को हल करने के लिए कोई संकेत नहीं दिया।क्वेरी स्ट्रिंग पैरामीटर के साथ विरासत यूआरएल पुनः लिखना

मैं विरासत मार्ग वर्ग ऊपर के लिंक में वर्णित को क्रियान्वित किया है, और यह है कि मैं क्या रूटिंग तालिका में परिभाषित किया है:

 routes.Add(
      "Legacy", 
      new LegacyRoute("fooref.aspx", 
      "FooRef", 
      new LegacyRouteHandler()) 
     ); 

     routes.MapRoute(
      "FooRef", 
      "{controller}/{action}", 
      new 
      { 
       controller = "Home", 
       action = "Index", 
       foo_id = UrlParameter.Optional, 
       bar_id = UrlParameter.Optional 
      } 
     ); 

जब मैं फिल Haack के मार्ग डिबगर उपयोग करें, यह इंगित करता है कि fooref .aspx का एक मैच है, लेकिन जब मैं मार्ग डीबगर बंद करता हूं, तो मुझे उपरोक्त त्रुटि मिलती है। अगर मैं कथन आदेश को उलट देता हूं, तो मुझे /ctprefer.aspx के लिए "संसाधन नहीं मिला" मिलता है, जो समझ में आता है - इसलिए ऐसा लगता है कि दूसरे क्रम में दिए गए वैध मार्ग के रूप में।

मुझे इस गायब नियंत्रक संदर्भ की घोषणा करने की आवश्यकता कहां है?

क्या एएसपी.नेट एमवीसी 2 आरटीएम के लिए रूटिंग आवश्यकताएं बदल गई हैं?

+0

यह अभी भी एक वैध सवाल है या यह अस्थायी था: मैं कोड है कि अपने ब्लॉग पर MVC 3 के साथ काम करता पोस्ट किया है? क्या तुम्हें कभी कोई हल मिला? – jcolebrand

+0

नहीं, अभी तक इसका समाधान नहीं मिला है। शायद एमवीसी 3 मुझे इसे हल करने की अनुमति देता है। थोड़ी देर के लिए इस पर वापस नहीं देखा है। –

उत्तर

2

इसका समाधान एमवीएचंडलर के बजाय सीधे एक आईएचटीपी हैंडलर का उपयोग करना है। http://www.olsonsoft.com/blogs/stefanolson/post/Handling-Legacy-Urls-in-AspNet-MVC-3.aspx

... स्टीफन

+0

धन्यवाद, स्टीफन। यह दिलचस्प लग रहा है। मुझे यकीन नहीं है कि यह यूआरएल दिशा के लिए डेटा संचालित दृष्टिकोण के साथ काम करेगा, लेकिन ऐसा लगता है कि यह पूर्व-घोषित सूचियों के लिए काम करता है। मुझे नहीं पता कि मैं इस पर काम करने के लिए वापस आ पाऊंगा, लेकिन ऐसा लगता है कि आपने जो लिखा है, वह केवल कोड परहेज के आधार पर काम करना चाहिए। मैं इसे स्वीकृत उत्तर के रूप में चिह्नित करूंगा और यदि मैं इस कोड पर काम करने के लिए वापस आ जाता हूं, तो मैं इसे एक पूर्ण परीक्षण दूंगा। –

0

आप आईआईएस के लिए URL Rewrite module पर एक नज़र डालना चाहते हैं। इसका उपयोग विरासत मार्गों के साथ अपने ऐप को 'प्रदूषण' किए बिना विरासत यूआरएल को अपने नए एमवीसी यूआरएल में अनुवादित करने के लिए किया जा सकता है।

पता नहीं है कि यह आपके समाधान के अनुरूप होगा लेकिन यह विकल्प होने के लायक है।

+0

Jakub, सुझाव के लिए धन्यवाद। मैं इस कार्यक्षमता से अवगत हूं। मैं सर्वर स्तर की बजाय वेब एप्लिकेशन स्तर पर नियंत्रित कुछ ढूंढ रहा था, क्योंकि इस वेब एप्लिकेशन को भविष्य में अन्य आईआईएस सर्वरों पर होस्ट किया जा सकता है जिसे मेरी टीम द्वारा प्रशासित नहीं किया जाएगा। –

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