簡體   English   中英

Pro ASP.net MVC Framework示例代碼不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM