Я реализовал фабрику пользовательских контроллеров в ASP.NET MVC, и я зарегистрировал ее в global.ascx
. Идея состоит в том, чтобы обрабатывать случай 404, а также исключения в конструкторах контроллера. Я знаю, что фабрика была назначена ASP.NET MVC, потому что по запросам я могу в нее вступить. Я вижу, что я возвращаю контроллер, который, как я думаю. Но почему, а почему, почему мой контроллер не используется? Но я думаю, что я получил бы обычное действие не найдено исключение, а не controller..conceptually мне интересно, если это даже правильное место, чтобы сделать это.Почему контроллер не использует контроллер, возвращенный этой фабрикой?
protected override IController GetControllerInstance
(RequestContext context,
Type controllerType)
{
IController controller = null;
try
{
controller = base.GetControllerInstance(context, controllerType);
}
catch (CurrentSessionException)
{
controller = new LoginController();
}
catch (System.Web.HttpException)
{
controller = new ErrorController();
}
catch (System.Exception)
{
controller = new ErrorController();
}
return controller;
}
Можем ли мы увидеть класс для предоставленного вами метода и как вы зарегистрировали свой заводской контроллер? Я бы также упомянул, если вы не должны смотреть на ответы в [Как я могу правильно обрабатывать 404 в ASP.NET MVC?] (Http://stackoverflow.com/questions/619895/how-can-i -properly-ручка-404-в-Asp-сетчатой MVC). –
О, я прочитал пример в приведенной ссылке. Похоже, что простое объяснение состоит в том, что он не работает через Visual Studio Debugger, но работает как чемпион, когда его развертывают в IIS 7.5. –
У меня не было проблем с использованием [IIS Express] (http://blogs.msdn.com/b/webdev/archive/2011/03/14/enabling-iis-express-support-in-vs-2010- sp1.aspx). –