[英]Pro ASP.net MVC Framework sample code not working
這是史蒂文·桑德森寫的一本非常好的書
我試圖遵循第4章,並嘗試從本書的代碼示例中在我的mvc代碼上設置IOC,但它不起作用。
我遵循從第97頁到第101頁的代碼,在其中設置了“控制反轉”並運行代碼,但出現以下錯誤。
將打開一個對話框,嘗試搜索以下文件:
c:\\ TeamCity \\ buildAgent \\ work \\ 1ab5e0b25b145b19 \\ src \\ Castle.Windsor \\ Windsor \\ WindsorContainer.cs
在以下代碼行中,看來controllertype為null:
protected override IController GetControllerInstance(
System.Web.Routing.RequestContext requestContext,
Type controllerType)
{
return (IController)container.Resolve(controllerType);
}
上面的return語句中會出現異常,說“ {”值不能為空。\\ r \\ n參數名稱:service”}”
這恰好在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());
}
}
請幫忙..
謝謝..
您的方法可能會為您的應用未提供的請求而調用。 例如對於favicon.ico。
確保您的controllerType不為null。 如果只是返回null並跳過您添加的代碼。
不同類型的瀏覽器將根據您的緩存方式向您的站點發出不同的“額外”請求。 另外,如果您使用IIS vs Visual Studio Dev Server托管站點,則這些站點可能會在請求到達之前就捕獲該請求(例如IIS將在不釋放控制器的情況下處理.jpg文件,但VS Dev Server可能不會)
首先,我認為最好讓相對鏈接多於絕對鏈接。
其次,檢查您的瀏覽器。 我發現您的代碼沒有錯誤。 也許不同的瀏覽器會使情況變得更糟。 另外,如果您使用IIS vs Visual Studio Dev Server托管站點,則這些站點可能會捕獲該請求。 :D
到目前為止,我發現以下鏈接解決了相同的確切問題。 我在這里復制它們以供我自己參考。
http://forums.asp.net/t/1559062.aspx?Pro+ASP.NET+MVC+-+setting+up+IOC+Castle+Windsor
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.