7

Wiem, że ten błąd pojawił się u ludzi wcześniej, ale wydaje się, że jest to szczególny przypadek."Brak trasy w tabeli tras odpowiada dostarczonym wartościom" w przypadku korzystania z obszarów

Pracuję nad ustawieniem SPA z ReactJS na ASP.NET MVC 4. Nie miałem problemu z uzyskaniem pracy na moim komputerze. Jednak dziwnym problemem, który widzę, jest to, że nie działa on na żadnych innych komputerach dla innych deweloperów. O ile widziałem, nie mam żadnych plików, które nie są sprawdzane pod kontrolą źródła. Korzystam z RouteDebugger i widzę, że została złapana właściwa trasa.

Trasa, której używam dla tego SPA to/V2/Home. Tak więc mam obszar o nazwie "V2", kontroler MVC w obszarze o nazwie "HomeController" i ma widok o nazwie "Indeks". Ustawiam catchall w V2AreaRejestracja.

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "V2_default", 
     "V2/{*url}", 
     new { area = "V2", controller = "Home", action = "Index" } 
    ); 
} 

Oto Application_Start w Global.asax.cs

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

    GlobalConfiguration.Configure(WebApiConfig.Register);   
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
    AuthConfig.RegisterAuth(); 

    AutoMapperConfiguration.Configure(); 
    Logger.Info("Application started"); 

    GlobalConfiguration.Configuration.EnsureInitialized(); 
} 

stałam się absolutnie nigdzie z tym. Chciałbym, żeby to rozwiązano. Zapraszam do pytania o brakujące elementy.

+0

Czy masz HomeController również na twojej stronie głównej? Jeśli tak, będziesz musiał określić obszar nazw, który będzie używany tutaj, używając parametru przestrzeni nazw MapRoute, w przeciwnym razie MVC nie będzie wiedział, którego "HomeController" użyć. Albo to, albo zmień nazwę na V2HomeController lub coś w tym stylu. –

+0

Wykonaj czyste zamówienie do innego folderu na komputerze i spróbuj uruchomić witrynę lub użyj programu podobnego do WinMerge, aby porównać katalogi. –

+0

@TiesonT. Zrobiłem to i nadal działa dobrze na mojej maszynie – SnareHanger

Odpowiedz

2

Nie jestem do końca pewien, co to jest, ale udało mi się rozwiązać problem. Ma to coś wspólnego z tym, jak radzimy sobie z routingiem i uwierzytelnianiem/uprawnieniami.

+0

Udekorowałeś indeks z atrybutem autoryzacji? Lub filtr uwierzytelniania? –

+1

@DaveAlperovich filtr uwierzytelniania. I jeszcze jeden atrybut niestandardowy, ale nie jestem teraz w pobliżu kodu. – SnareHanger

1

Nie mogę wyjaśnić, jak to działałoby na twoim komputerze, ale nie maszynach twoich kolegów.

Wygląda rejestracji obszar nie wie, co twoi przestrzeni nazw kontrolerów żyć w Spróbuj dodać 4th argumentu wywołania MapRoute metoda który deklaruje przestrzeń nazw nowych kontrolerów.

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "V2_default", 
     "V2/{*url}", 
     new { area = "V2", controller = "Home", action = "Index" }, 
     new string[] { "MyApplication.MyMvcProject.Areas.Controllers" } // Change this to the namespace of your area controllers. 
    ); 
} 
+0

Mam tam przestrzeń nazw. Myślę, że to wszystko już jest ustalone. Dzięki – SnareHanger

Powiązane problemy