J'ai téléchargé les sources assez récentes Ninject 2.0 et Ninject.Web.Mvc (ciblage mvc2) aujourd'hui, et les a construits avec succès .NET 4 (configuration de la version). Lorsque j'essaie d'exécuter une application avec Ninject 2.0, je continue à recevoir des erreurs 404 et je n'arrive pas à comprendre pourquoi.Cette 404 semble inévitable - qu'est-ce que je fais mal? [Ninject 2.0 avec ASP.NET MVC 2 sur .NET 4]
Ceci est mon Global.asax.cs (un peu shortified, par souci de concision):
using ...
using Ninject;
using Ninject.Web.Mvc;
using Ninject.Modules;
namespace Booking.Web
{
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
Booking.Models.AutoMapperBootstrapper.Initialize();
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
base.OnApplicationStarted();
}
protected void RegisterRoutes(RouteCollection routes)
{
...
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Entry", action = "Index", id = "" }
);
}
protected override IKernel CreateKernel()
{
INinjectModule[] mods = new INinjectModule[] {...};
return new StandardKernel(mods);
}
}
}
Le EntryController
existe et a une méthode Index
qui fait simplement un return View()
. J'ai débogué, et vérifié que l'appel à RegisterAllControllersIn()
est exécuté. J'ai également essayé d'utiliser Phil Haacks Routing debugger mais je reçois toujours un 404.
Que dois-je faire pour trouver la cause?
Dans Ninject 1.5, cela a été fait automatiquement par le 'NinjectHttpApplication' dont j'ai hérité. J'ai jeté un coup d'oeil à l'assemblage dans Reflector, et je n'ai trouvé aucun appel à 'RegisterRoutes()' dans cette version, mais je ne suis pas sûr de pouvoir en faire un moi-même. Où puis-je obtenir le 'RouteTable' dont j'ai besoin en tant qu'argument? –
Brillant! J'ai examiné la méthode 'Application_Start()' dans 'NinjectHttpApplication' encore plus près, et j'ai remarqué qu'il y avait une liaison pour' RouteCollection' là. Ajouter un simple 'RegisterRoutes (Kernel.Get());' à ma méthode init a résolu le problème. Merci! –