6

Nachdem ich versucht habe, dies seit Jahren auszuarbeiten, über Routing-Konflikte nachzudenken und mehr - habe ich von Anfang an ein separates Projekt gestartet.Gibt es etwas Besonderes an einem MVC-Controller namens Eigenschaften?

Es sieht aus wie ein MVC-Controller namens "Eigenschaften" immer eine 403.14 verbotene Nachricht zurückgibt, wenn Sie versuchen, auf die Stammwebsite zuzugreifen (http://site/properties) - jedoch funktionieren andere Seiten (http://site/properties/index).

Es funktioniert gut als Controller in einem Bereich, aber ich kann es einfach nicht auf der Hauptseite erstellen.

Ich fragte mich, ob jemand weiß, warum und was der beste Weg, um dies ist?

Antwort

2

Das Problem ist, dass Ihr Projekt bereits einen Ordner mit dem Namen Properties enthält, der hauptsächlich für die AssemblyInfo.cs-Datei verwendet wird, aber auch andere Sachen enthält. Die Engine, mit der aufgelöst wird, welche Dateien an den Client gesendet werden, priorisiert Dateien und Ordner über das Routing. also versucht die URL http://site/properties Serverinhalte von dort zu bekommen, was letztendlich trotzdem blockiert ist.

3

Zusätzlich zu DavidG answer.

Wenn Sie das Projekt veröffentlichen, enthält der kompilierte Build keinen Eigenschaftenordner. Um das Problem bei der lokalen Entwicklung zu lösen, können Sie RouteExistingFiles auf true setzen, damit ASP.NET-Routing alle Anforderungen behandelt.

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

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