2012-01-09 6 views
14

मेरे पास मेरे प्रोजेक्ट में दो क्षेत्र हैं।कई प्रकार पाए गए जो 'होम' नामक नियंत्रक से मेल खाते हैं - दो अलग-अलग क्षेत्रों में

Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter. 

The request for 'Home' has found the following matching controllers: 
BaseAdminMVC.Areas.BaseAdmin.Controllers.HomeController 
BaseAdminMVC.Areas.TitomsAdmin.Controllers.HomeController 

मैं कुछ स्रोत यहाँ पाया है:: अब जब मैं कार्यक्रम चलाने मैं इस त्रुटि मिलती है Multiple Controller name
लेकिन मैं इसे केवल एक ही क्षेत्र के लिए काम करता है।
मेरे मामले में मेरे पास विभिन्न क्षेत्रों में दो परियोजनाएं हैं। उम्मीद है कि कोई यह बता सकता है कि समस्या को हल करने के लिए मुझे क्या करना चाहिए।
यहाँ Global.asax फ़ाइल है:

public static void RegisterRoutes(RouteCollection routes) 
     { 
      string[] namespaces = new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers", "BaseAdminMVC.Areas.TitomsAdmin.Controllers"}; 

      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
       namespaces 
      ); 
     } 

वैसे, मैं भी Area फ़ोल्डर के बाहर नियंत्रक ("HomeController")। यह सिर्फ दो परियोजनाओं BaseAdmin और TitomsAdmin के लिंक प्रदान करता है। पहले से

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

      routes.MapRoute(
       "BaseAdmin", 
       "BaseAdmin/{controller}/{action}", 
       new { controller = "Account", action = "Index" }, 
       new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers" } 
      ); 

      routes.MapRoute(
       "TitomsAdmin", 
       "TitomsAdmin/{controller}/{action}", 
       new { controller = "Home", action = "Index" }, 
       new string[] { "BaseAdminMVC.Areas.TitomsAdmin.Controllers" } 
      ); 

धन्यवाद !!:

मैं इस समाधान की कोशिश की है, लेकिन अभी भी काम नहीं करता है

+1

संपादन को पुन: संपादित करें: आपको डिफ़ॉल्ट मार्ग को नीचे (अंतिम स्थान पर) स्थानांतरित करना होगा। आदेश यहां महत्वपूर्ण है। –

+0

@ हेनकहोल्टरमैन अभी भी काम नहीं किया। – fiberOptics

+0

और यह अभी भी स्पष्ट नहीं है कि "काम नहीं करता" का अर्थ क्या है। –

उत्तर

18

मैं क्या हो पता नहीं है, लेकिन इस कोड ठीक काम करता है:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     new string[] { "BaseAdminMVC.Areas.TitomsAdmin.Controllers" } 
    ); 
} 
+28

बस चिमिंग .. (और मुझे पता है कि यह एक साल देर हो चुकी है), लेकिन मुझे इस त्रुटि को प्राप्त हुआ क्योंकि मैंने अपनी आउटपुट असेंबली का नाम बदल दिया, और मेरा डिफ़ॉल्ट नामस्थान। मैंने पुरानी संकलित असेंबली (एमवीसी 3 साइट से) को परियोजना के डीबग/बिन फ़ोल्डर में महसूस किए बिना छोड़ दिया। जब साइट लोड हो जाएगी, तो उसने पुराने असेंबली और नए नामित असेंबली दोनों से घर नियंत्रकों को उठाया और आपको मिली वही त्रुटि फेंक दी। लंबी कहानी छोटी, मैं बिन में गया, पुरानी असेंबली को हटा दिया, और सब कुछ पूरी तरह से काम करना शुरू कर दिया। – OFConsulting

+0

इसके लिए धन्यवाद! अब मैं 4.0 से .Net 4.5 में माइग्रेट कर रहा हूं। यदि आपकी त्रुटि फिर से दिखाई देती है तो आपकी युक्तियां सहायता हो सकती हैं। – fiberOptics

+1

@OFConsulting मुझे पता है कि मुझे एक टिप्पणी में "धन्यवाद" नहीं कहना चाहिए, लेकिन एफयू - * - धन्यवाद! – Ydhem

6

मैं अपने प्रोजेक्ट नाम स्थान/विधानसभा के नाम बदलने करने के बाद यह त्रुटि हुई।

यदि आप नामस्थान/असेंबली का नाम बदल चुके हैं तो आपके पिछले फ़ोल्डर से आपके बिन फ़ोल्डर में एक बचे हुए असेंबली/डीएल हो सकता है। बस इसे वहां से हटा दें और इसे काम करना चाहिए।

2

प्रोजेक्ट पर राइट क्लिक करें और प्रोजेक्ट को साफ़ करें का चयन करें। या फिर बिन निर्देशिका पूरी तरह से खाली करें और फिर फिर से निर्माण करें। यह किसी भी बाएं असेंबली

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

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