3

ウィンザー城で問題が発生しました。私を助けてください!Castle Windsor 3.2.0.0、.Net 4.0、および Mvc 3.0.0.0 を使用しています

どうもありがとう!

問題: サービス Mvc IControllerFactory をサポートするためのコンポーネントが見つかりませんでした ここにいくつかのコードがあります。

public class WindsorDependencyResolver : IDependencyResolver
{
   private readonly IWindsorContainer _container;
   public WindsorDependencyResolver(IWindsorContainer container)
   {
       this._container = container;
   }

   public object GetService(Type serviceType)
   {
       return _container.Resolve(serviceType);
   }

   public IEnumerable<object> GetServices(Type serviceType)
   {
       return _container.ResolveAll(serviceType).Cast<object>();
       //return _container.ResolveAll<object>(serviceType);
   }
}

//Castle Windsor register
protected void Application_Start()
{
var container = new WindsorContainer();

container.AddFacility<TypedFactoryFacility>()
    .Register(Component.For<IServiceFactory>().AsFactory().LifeStyle.Transient);

        //Do register the service/type to container
container.Register(
  Types.FromThisAssembly()
  .BasedOn(typeof(Controller))
  .WithService.Self().LifestyleTransient());

container.Register(
  Component.For<IRepository>()
  .ImplementedBy<GenericRepository>().DependsOn(Dependency.OnValue("context", "ProjectContext"))
  .LifeStyle.PerWebRequest);

container.Register(
  Types.FromAssembly(Assembly.GetAssembly(typeof(IUserService)))
  .BasedOn(typeof(ServiceBase))
  .WithService.DefaultInterfaces().LifestylePerWebRequest());

DependencyResolver.SetResolver(new WindsorDependencyResolver(container));
}
4

2 に答える 2

4

DependencyResolver から離れてください...代わりに ControllerFactory を使用してください。

チュートリアルをご覧ください

于 2013-07-02T07:22:10.593 に答える