1

我今天下载了相当新的Ninject 2.0Ninject.Web.Mvc(针对 mvc2)源,并成功地针对 .NET 4(发布配置)构建了它们。当尝试使用 Ninject 2.0 运行应用程序时,我不断收到 404 错误,我不知道为什么。

这是我的 global.asax.cs(为简洁起见,略短):

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);
        }
    }
}

EntryController存在,并且有一个Index简单的方法return View()。我已经调试,并验证调用RegisterAllControllersIn()已执行。我也尝试过使用Phil Haacks 路由调试器,但我仍然得到 404。

我该怎么做才能找到造成这种情况的原因?

4

1 回答 1

0

您的路线是否已注册?是从基类调用的吗?

还要确保您正确地注册了您的控制器。我不确定 Ninject 的控制器工厂如何期望它,但它可能需要一个特定的名称或其他东西。

于 2010-04-01T21:49:09.133 回答