Вопрос

Я перенес проект MVC1 в MVC2 RC, и теперь сайт вообще не работает.Я получаю сообщение об ошибке "Точка входа не найдена".

Я перенес проект следующим образом эта ссылка

Я использую Castle Windsor в качестве DI.

Вот часть global.asax.cs

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", "{controller}/{action}/{id}", new { controller = "Main", action = "Index", id = "" });
    }

    protected void Application_Start()
    {
        log4net.Config.XmlConfigurator.Configure();
        InitializeServiceLocator();
        //RouteConfigurator.RegisterRoutesTo(RouteTable.Routes);
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);

        Bootstrapper.BootStrap();
    }

    /// <summary>
    /// If you need to communicate to multiple databases, you'd add a line to this method to
    /// initialize the other database as well.
    /// </summary>
    private void InitializeNHibernateSession()
    {
        var cfg =
            NHibernateSession.Init(
                webSessionStorage,
                new string[] { Server.MapPath("~/bin/Edi.Advance.EPortfolio.Data.dll") },
                new AutoPersistenceModelGenerator().Generate(),
                Server.MapPath("~/hibernate.cfg.xml")).AddAssembly(typeof(ISoftDeletable).Assembly).AddAssembly(
                typeof(Action).Assembly);

        //cfg.SetListener(ListenerType.Delete, new AdvanceDeleteEventListener(IoC.Resolve<ISecurityContextService>()));
        //cfg.SetListener(ListenerType.SaveUpdate, new AdvanceSaveUpdateEventListener(IoC.Resolve<ISecurityContextService>()));
    }

    /// <summary>
    /// Instantiate the container and add all Controllers that derive from 
    /// WindsorController to the container.  Also associate the Controller 
    /// with the WindsorContainer ControllerFactory.
    /// </summary>
    protected virtual void InitializeServiceLocator()
    {
       // AddComponentsToIoC();
        var container = new WindsorContainer();

        ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));
        container.RegisterControllers(typeof(MainController));

        ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));

    }

MainController очень прост, действие индекса просто возвращает строку "Hello world from MVC2".(Нет представления для этого действия).

Самое интересное, если я закомментирую эту строку:

ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));

MainController работает нормально, но, конечно, другие более сложные контроллеры не работают, говоря, что нет конструктора без параметров.

Таким образом, очевидно, что что-то не так с WindsorControllerFactory.

Есть какие-нибудь идеи?Спасибо

Это было полезно?

Решение

Использование:защищенное переопределение IController GetControllerInstance(System.Web.Routing.RequestContext Запрос controllerType, тип controllerType)

Вместо:защищенное переопределение IController GetControllerInstance(Тип controllerType)

Другие советы

Использование:
защищенное переопределение IController GetControllerInstance(System.Web.Routing.RequestContext Запрос controllerType, тип controllerType)

Вместо:
защищенное переопределение IController GetControllerInstance(Тип controllerType)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top