ASP.NET MVC アプリケーションを作成し、Castle Windsor を IOC として使用しようとしています。
ただし、コントローラーが解決しようとしているときに、メソッドの「コントローラー名」パラメーターに「コンテンツ」と「スクリプト」を取得していますCreateController(RequestContext requestContext, string controllerName)
。言うまでもなく、これらはコントローラーではありません。それらは Web サイトのフォルダーのようです
これらをコントローラーとして登録しようとするのはなぜですか?
これらのフォルダーを無視するにはどうすればよいですか??
ありがとう
WindsorControllerFactory からの例外
画像を投稿できないため、説明する必要があります-基本的には
「コンテンツコントローラーが見つかりませんでした」
Global.asax.cs
public static IIocContainer Ioc;
protected void Application_Start()
{
InitialiseIocContainer();
RegisterViewEngine(ViewEngines.Engines);
RegisterRoutes(RouteTable.Routes);
StartProfiling();
}
private void InitialiseIocContainer()
{
IWindsorContainer _container = new WindsorContainer();
var controllerTypes = typeof (GidgetController).Assembly.GetTypes();
foreach (var controllerType in controllerTypes.Where((t=>typeof(IController).IsAssignableFrom(t))))
{
_container.AddComponentLifeStyle(controllerType.Name.ToLower(), controllerType, LifestyleType.Transient);
}
_container.AddComponent("a",typeof(IGidgetService), typeof(GidgetService));
_container.AddComponent("b",typeof(IGidgetRepository), typeof(GidgetRepository));
_container.AddComponent("c",typeof(IGidgetValidator), typeof(GidgetValidator));
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(_container));
}
windsorControllerFactory.cs
public IController CreateController(RequestContext requestContext, string controllerName)
{
try
{
controllerName = controllerName.ToLower() + "controller";
var controller = _container.Resolve<IController>(controllerName);
return controller;
}
catch (ComponentNotFoundException)
{
throw new HttpException(404, string.Format("The {0} controller was not found", controllerName));
}
}