2010-09-14 53 views
0

我想將global.asax中的路由註冊過程抽象爲引導程序。我班的樣子:使用引導程序註冊路由失敗,出現VirtualPathProvider異常

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

我認爲統一是試圖使用此構造:如果這是你需要明確地將其配置爲使用該參數的構造函數或刪除具有構造的情況下

public RegisterRoutes(RouteCollection routes) 

路線參數。

ps。我不能說上述內容是準確的,因爲我將它置於我對統一行爲的期望中,表現出類似於該場景中的StructureMap。

+0

你是對的!一旦我嘗試任何一種方法,它的工作。謝謝。 – Thomas 2010-09-14 22:38:11

相關問題