2010-10-21 31 views
0

這是一個非常好的書由史蒂芬·桑德森臨ASP.net MVC框架示例代碼不工作

我試圖按照第4章,並從的代碼示例試圖建立國際奧委會在我的MVC代碼書,但它不工作。

我遵循從第97頁到第101頁的代碼,我設置了控制反轉並運行代碼,但出現以下錯誤。

打開一個對話框,試圖尋找下列文件:

C:\ TeamCity的\ buildAgent \工作\ 1ab5e0b25b145b19的\ src \ Castle.Windsor \溫莎\ WindsorContainer.cs

好像controllertype在下面的代碼行空:

protected override IController GetControllerInstance(
    System.Web.Routing.RequestContext requestContext, 
    Type controllerType) 
{ 
    return (IController)container.Resolve(controllerType); 
} 

唯一的例外發生在上述return語句說:「{」值不能爲空\ r \ n參數名:服務「}」

這恰好在WindsorContainerFactory中。

路線如下所示:

public class MvcApplication : System.Web.HttpApplication 
{ 
public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Products", action = "List", id = ""} // Parameter defaults 
    ); 
} 

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory()); 
} 
} 

請幫助..

謝謝..

+0

聽起來像路由引擎沒有找到所請求資源的控制器。什麼是網址,路線是什麼樣的? – 2010-10-21 14:52:45

+0

剛剛添加了路線信息 – 2010-10-21 14:56:01

+1

請求的網址是什麼?我會建議小提琴手來確定這一點。正在請求的網址可能不是您所期望的,也可能是您不知道的瀏覽器請求的內容,例如瀏覽器自動請求的favicon圖標。 – 2010-10-21 15:14:56

回答

2

你的方法可能正在呼籲不是由您的應用程序服務的請求。例如爲favicon.ico。

確保您的controllerType不爲null。如果它只是返回null並繞過你添加的代碼。

不同類型的瀏覽器會根據緩存方式向您的站點發出不同的「額外」請求。另外,如果您使用IIS與Visual Studio Dev Server託管網站,則可能會在請求達到您的請求前捕獲該請求(例如,IIS將服務器上的.jpg文件,而不必讓控制器放棄,但VS Dev Server可能不會)

0

首先,我認爲這將是更好,如果你讓相對鏈接不是絕對的聯繫更加。

二,檢查你的瀏覽器。我看到你的代碼沒有錯誤。也許不同的瀏覽器會讓它變得更糟。另外,如果您使用IIS與Visual Studio Dev Server託管網站,則可能會收到請求。 :D