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

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

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, но не нашел.

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

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


person zosim    schedule 07.02.2012    source источник


Ответы (1)


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

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

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

person RPM1984    schedule 07.02.2012
comment
спасибо за подсказку с анализом requestContext. Я обнаружил, что был запрос к файлу css, которого не было на диске. Я забыл удалить эту ссылку из представления. Так что, вероятно, когда IIS не нашел этот файл, он попытался использовать MVC. Я работаю на Windows 7 Ultimate. Я не уверен, какая версия IIS установлена ​​по умолчанию. - person zosim; 08.02.2012