Регистрация маршрутов с использованием загрузчика завершается неудачно с исключением VirtualPathProvider - PullRequest
0 голосов
/ 14 сентября 2010

Я пытаюсь абстрагировать процесс регистрации маршрута из global.asax в загрузчик. Мой класс выглядит так:

public class RegisterRoutes : IBootstrapperTask
{
    private readonly RouteCollection routes;

    public RegisterRoutes(RouteCollection routes)
    {
        this.routes = routes;
    }

    public RegisterRoutes() : this(RouteTable.Routes)
    {
    }

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

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

Мой global.asax выглядит так:

protected void Application_Start()
{
    Bootstrapper.Run();
}

Мой упрощенный загрузчик выглядит так:

public static class Bootstrapper
{
    static Bootstrapper()
    {
        // wires up the container
    }

    public static void Run()
    {
        container.ResolveAll<IBootstrapperTask>().Each(t => t.Execute());
    }
}

Средство распознавания контейнера нормально, но когда я пытаюсь выполнить задачи, я получаю: InvalidOperationException - Тип VirtualPathProvider не может быть создан. Вы должны настроить контейнер для предоставления этого значения.

Любые отзывы будут оценены.

Спасибо

1 Ответ

1 голос
/ 14 сентября 2010

Я думаю, что Unity пытается использовать этот конструктор:

public RegisterRoutes(RouteCollection routes)

Если это так, вам нужно либо явно сконфигурировать его для использования конструктора без параметров, либо удалить конструктор, имеющий параметр маршрутов.

пс. Я не могу утверждать, что вышеупомянутое является точным, поскольку я основываюсь на своих ожиданиях единства, чтобы вести себя аналогично StructureMap в этом сценарии.

...