2017-06-08 2 views
0

Ich habe ein Projekt namens Project.Web, die einen Ordner Mvc enthält, die einen Basiscontroller namens BaseController.cs enthält.ASP.NET MVC Benutzerdefinierte Controller funktioniert nicht

namespace ProsecVHIPHelper.Web.Mvc 
{ 
    /// <summary> 
    /// A base controller for all controllers 
    /// </summary> 
    public abstract class BaseController : Controller 
    { 
     /// <summary> 
     /// Constructor 
     /// </summary> 
     /// <param name="applicationContext"></param> 
     protected BaseController(ApplicationContext applicationContext) 
     { 
      if (applicationContext == null) throw new ArgumentNullException("applicationContext"); 
      ApplicationContext = applicationContext; 
     } 

     /// <summary> 
     /// Default constructor 
     /// </summary> 
     protected BaseController() : this(ApplicationContext.Current) { } 

     /// <summary> 
     /// The application context 
     /// </summary> 
     public ApplicationContext ApplicationContext 
     { 
      get; 
      private set; 
     } 

     /// <summary> 
     /// Get the services singleton 
     /// </summary> 
     public ServiceContext Services 
     { 
      get { return ApplicationContext.Services; } 
     } 
    } 
} 

Dieser Basiscontroller wird von allen anderen Controllern verwendet.

In meinem zweiten Projekt namens Project.Web.UI ich eine Route Config wie haben:

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

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Ftp", action = "Index", id = UrlParameter.Optional }, 
       namespaces: new[] { "Project.Web.Mvc" } 
      ); 
     } 
    } 

Wo ich die Basis-Controller-Namespace enthalten.

Aber wenn ich neue Controller mit meinem Basis-Controller erstellen, bekomme ich immer eine 404 nicht gefunden Ausnahme.

Wenn ich die Standard-Controller-Klasse verwenden, dann funktioniert es.

Zuerst befanden sich meine Controller im Project.Web Projekt in einem Ordner namens Controllers. Wenn ich diesen Namespace auch in der Route-Konfiguration hinzufüge, funktioniert das nicht.

Dann habe ich diese Controller (nicht die Basis-Controller) zu meinem anderen Projekt Project.Web.UI verschoben, aber immer noch kein Glück.

Das Project.Web Projekt ist eine Klassenbibliothek und das Project.Web.UI ist ein Webprojekt.

Irgendwelche Ideen?

Antwort

0

Ok ich habe die Lösung gefunden. Das Problem war, dass ich die System.Web.Mvc mit der Add-Referenz hinzugefügt habe. Aber das hatte eine andere Version als die System.Web.Mvc in meinem Webprojekt.

Nach dem Entfernen dieser Referenz und fügte einen Verweis auf die DLL im Web-Projekt, alles hat funktioniert wie ein Charme!

Verwandte Themen