2013-08-19 7 views
7

के लिए नियम पंजीकृत नहीं कर रहा है मेरे पास एक एमवीसी 4 वेब एप्लिकेशन है जिसमें कुछ क्षेत्र शामिल हैं। मुझे "कैटलॉग" नामक क्षेत्र के रूटिंग नियमों में समस्या है। RouteConfig.cs फ़ाइल है:क्षेत्र पंजीकरण। रजिस्ट्रारअलएरिया() क्षेत्र

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     ); 
    } 

और Global.asax इस प्रकार है:

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     WebApiConfig.Register(GlobalConfiguration.Configuration); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
    } 

और CatalogAreaRegistration कुछ इस तरह है:

public class CatalogAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "Catalog"; 
     } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Catalog_default", 
      "Catalog/{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

समस्या यह है, जब मैं डिबग RouteCollection मार्गों में क्षेत्र में परिभाषित नियम शामिल नहीं हैं। मैंने रूटरबेगर का इस्तेमाल किया और देखा कि मार्ग संग्रह में "कैटलॉग" क्षेत्र के नियम शामिल नहीं हैं। रूटऑनफिग में केवल नियम हैं।

मुझे नहीं पता कि समस्या क्या है। अग्रिम में धन्यवाद।

+0

क्या होगा यदि आप जोड़ने के 'क्षेत्र =" सूची "' 'RegisterArea' विधि में' MapRoute' कॉल की चूक के लिए? – asymptoticFault

+0

@asymptoticFault मैंने कोशिश की लेकिन यह रजिस्ट्रेशन एरिया में नियम के बाद से कोई फर्क नहीं पड़ता, वैश्विक मार्गों में मौजूद नहीं है। – atakanozgun

+0

दूसरे शब्दों में, यदि मैं RegisterArea विधि में ब्रेक पॉइंट जोड़ता हूं, तो यह कभी हिट नहीं होता है। हालांकि, AreaRegistration.RegisterAllAreas() global.asax – atakanozgun

उत्तर

16

मुझे लगता है कि विजुअल स्टूडियो के कैशिंग के कारण, कुछ डीएलएल ठीक से संकलित नहीं होते हैं और यह स्थिति हो सकती है। यदि आप करते हैं, तो निम्न स्थानों से सभी अस्थायी फ़ाइलों को हटाने:

  • C: \ अस्थायी
  • C: \ Users \% प्रयोक्ता नाम% \ AppData \ Local \ Microsoft \ VisualStudio
  • C: \ Windows \ Microsoft \ v4.0.30319 \ अस्थायी ASP.NET फ़ाइलें
  • सी नेट \ फ्रेमवर्क: \ Microsoft.NET \ Framework64 \ v4.0.30319 \ अस्थायी \ Windows ASP.NET फ़ाइलें
  • पथ \ \ के लिए अपना \ परियोजना \ obj \ डीबग

अपडेट :

  • AppData \ Local \ अस्थायी \ अस्थायी ASP.NET फ़ाइलें

फिर दृश्य स्टूडियो को पुनरारंभ करें। इस तरह मैंने हल किया।

+2

मैं ओबीजे और बिन फ़ोल्डर को साफ करने के लिए हटा देता हूं, और यह काम करता है! –

+0

यह मेरे लिए भी काम करता है.धन्यवाद! – avidProgrammer

1

बस AreaRegistration करने के लिए अपने नियंत्रकों के नाम स्थान जोड़ें:

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      **namespaces: new string[] { "Web.Admin.Controllers" }** 
     ); 
    } 
संबंधित मुद्दे