Получение "Ресурс не найден." ошибка при использовании Ninject
Я работаю над приложением ASP.NET MVC 3.0, используя Ninject в качестве своей инфраструктуры внедрения зависимостей.
Итак, я унаследовал свой контроллер от NinjectHttpApplication так:
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
}
protected void Application_Start()
{
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
AreaRegistration.RegisterAllAreas();
DependencyResolver.SetResolver(new NinjectDependencyResolver(Kernel));
}
protected override Ninject.IKernel CreateKernel()
{
return new StandardKernel(new QueriesModule());
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index" },
new string[] { typeof(HomeController).Namespace }
);
}
}
Но всякий раз, когда я запускаю приложение и пытаюсь перейти к любому из моих контроллеров, я получаю сообщение об ошибке:
Этот ресурс не может быть найден.
Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, изменилось его имя или временно недоступен. Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.
Запрашиваемый URL: /Home/ Индекс
Что вызывает это и как мне это исправить?
1 ответ
Оказывается, это происходило потому, что NinjectHttpApplication
класс, от которого я наследую, вызывает OnApplicationStarted()
метод при запуске. Таким образом, решение состоит в том, чтобы удалить Application_Start()
метод и переместить весь этот код в OnApplicationStarted()
,