1
我是Autofac和IoC的新手,所以现在我尝试使用IoC构建我的第一个ASP.NET MVC 3应用程序。Autofac - 在ASP.Net中处理多个请求MVC 3
在此代码中,我尝试手动注册ProductController(在Global.asax中)。
protected void AutofacIocRegistration()
{
var builder = new ContainerBuilder();
//PRODUCT CONTROLLER
var registration = builder.Register(c => new ProductsController(c.Resolve<IProductRepository>()));
builder.RegisterType<ProductsController>().InstancePerHttpRequest();
SqlProductsRepository productRepository = new SqlProductsRepository(DATABASE_CONNECTION);
builder.RegisterInstance(new ProductsController(productRepository));
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
当我建的第一次应用,我得到的4种产品在HTML页面列表(如我所料),但是当我刷新页面或进入“下一步”的产品的其他名单,然后我得到的错误
控制器 的单个实例“WebUI.Controllers.ProductsController” 不能被用来处理多个 请求。如果自定义控制器 工厂正在使用中,请确保其 为每个请求创建了一个新的 控制器实例。
正如你可以在这个代码
builder.RegisterType<ProductsController>().InstancePerHttpRequest();
看到我尝试用InstancePerHttpRequest()方法,但是不成功的解决这个问题,如果你有任何建议,请张贴。
感谢您提前提供任何帮助。
谢谢,现在的作品,此外我复制SqlProductsRepository类中的DATABASE_CONNECTION字符串,并删除参数从建设者 – SpaceA 2011-06-08 22:40:35
篦。将答案标记为已接受 – Eranga 2011-06-08 22:50:19