【发布时间】:2017-09-06 06:15:26
【问题描述】:
Autofac 已在 Web 表单应用程序中进行如下配置。
var builder = new ContainerBuilder();
BootStrapper.InitializeBizTypes(builder);
builder.RegisterType<Component>().**InstancePerRequest()**;
_containerProvider = new ContainerProvider(builder.Build());
页面中有一个GridView与ObjectDataSource绑定,对于ObjectDataSource,SelectMethod是一个静态类中的方法。
我在静态类中的代码:
private static IComponentContext GetContainer()
{
var cpa = (IContainerProviderAccessor)HttpContext.Current.ApplicationInstance;
return cpa.ContainerProvider.ApplicationContainer;
}
public static IList<RoleDto> GetRoles()
{
***var biz = GetContainer().Resolve<IRoleBiz>();***
return biz.GetRoles();
}
解析界面时出现以下错误。
标签匹配“AutofacWebRequest”的范围不可见 请求实例的范围。
如果您在 Web 应用程序的执行过程中看到这种情况,通常是 表示注册为每个 HTTP 请求的组件正在 由 SingleInstance() 组件(或类似场景)请求。 在 web 集成下总是从 依赖解析器或请求生命周期范围,从不来自 容器本身。
所以我的问题是,当生命周期范围为“InstancePerRequest”时,如何在 asp.net Web 表单应用程序中解析静态类中的注册类型?
【问题讨论】: