使用引导程序注册路由失败,并出现VirtualPathProvider异常

时间:2010-09-14 19:26:34

标签: asp.net-mvc asp.net-mvc-2 unity-container

我试图将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 个答案:

答案 0 :(得分:1)

我认为团结正试图使用​​这个构造函数:

public RegisterRoutes(RouteCollection routes)

如果是这种情况,您需要显式配置它以使用参数less constructor或删除具有routes参数的构造函数。

PS。我不能声称上述内容是准确的,因为我的基础是我对统一的期望,在这种情况下行为与StructureMap相似。

相关问题