Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Отсутствует регистрация ContentController в asp.net mvc при использовании пользовательского ControllerFactory с единством

Автор вопроса: zosimОтветов: 1

Я использую фабрику настраиваемых контроллеров с единством для создания экземпляров контроллера. Моя фабрика выглядит так:

public class UnityControllerFactory : DefaultControllerFactory
{

    public override IController CreateController(RequestContext requestContext, string  controllerName)
    {
        return IoC.Container.Resolve<BaseController>(controllerName + "Controller");
    }

....

Когда я отлаживаю этот код, он пытается разрешить ContentController (controllerName == "Content"), который, конечно же, не зарегистрирован в моем файле конфигурации Unity. Я попытался выяснить, существует ли ContentController где-нибудь в System.Web.MVC, но не нашел.

Может кто-нибудь объяснить мне, почему эта фабрика пытается разрешить этот контроллер?

Благодарность

controllerunity-container

Ответы

Ответ 1 · рейтинг 1 · RPM1984

Это предположение, но похоже, что статический контент с вашего веб-сайта в папке Content (например, изображения, css и т. д.) обслуживается через MVC, хотя этого не должно быть.

Какой сервер вы используете? Если вы используете IIS 7 или IIS Express, он должен использовать управляемый конвейер, и поэтому запросы этих типов не должны даже попадать в среду выполнения MVC.

Попробуйте копнуть глубже в экземпляр requestContext, чтобы увидеть, что именно запрашивает этот контроллер.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы