【发布时间】:2009-08-14 14:30:08
【问题描述】:
我用 ASP.NET MVC 编写了一个 Web 应用程序。默认 ControllerFactory 已替换为 Castle Windsor 的 Controller
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory());
问题是我使用的是运行 II6 的共享主机,所以为了让 MVC 正常工作,我不得不将默认 MapRoute 替换为
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
[ 注意:{controller}.aspx ]
当我使用此修改后的 MapRoute 上传新创建的“ASP.NET MVC Web 应用程序”时,它工作正常......但是当我上传我的 MVC Web 应用程序(使用 Castle Windsor)时 我在浏览器中收到以下错误:
网址[http://10.0.0.9/LoseOnlyToday/Home.aspx]
“/LoseOnlyToday”应用程序中的服务器错误。 IControllerFactory 'WebUI.WindsorControllerFactory' 没有为名为 'Home.aspx' 的控制器返回一个控制器。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.InvalidOperationException:IControllerFactory 'WebUI.WindsorControllerFactory' 未返回名为“Home.aspx”的控制器的控制器。
来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。
堆栈跟踪:
[InvalidOperationException:IControllerFactory 'WebUI.WindsorControllerFactory' 没有为名为 'Home.aspx' 的控制器返回控制器。] System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +304 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +54 System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
版本信息:Microsoft .NET Framework 版本:2.0.50727.3053; ASP.NET 版本:2.0.50727.3053
我认为 Castle Windsor 不喜欢将“Home.aspx”解释为控制器......
我该如何解决这个问题?
【问题讨论】:
标签: asp.net-mvc iis-6 castle-windsor