Не могу переопределить CreateController в DefaultControllerFactory - PullRequest
1 голос
/ 13 декабря 2010

Я пытаюсь внедрить Elmah в свое MVC-приложение, используя этот замечательный учебник.

http://dotnetdarren.wordpress.com/2010/07/27/logging-on-mvc-part-1/

Все выглядит хорошо, но когда я строю, я получаю

Не найдено подходящего метода для переопределения

Ниже приведен класс, который я взял прямо из образца

public class ErrorHandlingControllerFactory : DefaultControllerFactory
    {
        /// <summary>
        /// Injects a custom attribute 
        /// on every action that is invoked by the controller
        /// </summary>
        /// <param name="requestContext">The request context</param>
        /// <param name="controllerName">The name of the controller</param>
        /// <returns>An instance of a controller</returns>
        public override IController CreateController(
            RequestContext requestContext,
            string controllerName)
        {
            var controller =
                base.CreateController(requestContext,
                controllerName);

            var c = controller as Controller;

            if (c != null)
            {
                c.ActionInvoker =
                    new ErrorHandlingActionInvoker(
                        new HandleErrorWithELMAHAttribute());
            }

            return controller;
        }
    }

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Ну, после гораздо большего исследования я нашел проблему по этой ссылке

http://forums.asp.net/t/1622810.aspx

Необходимо добавить ссылку на System.Web.Routing, поскольку она находилась в отдельном проекте.

0 голосов
/ 13 декабря 2010

Мне удалось успешно построить:

  1. Создан новый пустой проект ASP.NET MVC 2
  2. Из руководства, скопированного в код для класса HandleErrorWithELMAHAttribute.
  3. Скопирован код для класса ErrorHandlingActionInvoker.
  4. Скопирован код для класса ErrorHandlingControllerFactory.
  5. Добавлены необходимые using операторы и ссылка на ELMAH.

Затем, чтобы проверить, я заменил исходный код для ErrorHandlingControllerFactory кодом из вашего вопроса, и он также скомпилирован без ошибок.

Мне удалось получить этоошибка заключалась в добавлении класса с именем DefaultControllerFactory, так что ErrorHandlingControllerFactory будет наследоваться от этого.Это кажется маловероятным, но вы можете убедиться, что вы наследуете правильный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...