Autofac已在Web窗体应用程序中配置如下。
var builder = new ContainerBuilder();
BootStrapper.InitializeBizTypes(builder);
builder.RegisterType<Component>().**InstancePerRequest()**;
_containerProvider = new ContainerProvider(builder.Build());
在页面中有一个与ObjectDataSource的GridView绑定,对于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();
}
解析界面时出现以下错误。
没有标记匹配的范围&#39; AutofacWebRequest&#39;是可见的 请求实例的范围。
如果您在执行Web应用程序期间看到这种情况,通常会这样 表示正在按照HTTP请求注册的组件 由SingleInstance()组件(或类似方案)请求。 在Web集成下总是请求来自的依赖项 依赖解析器或请求生命周期范围,永远不会从 容器本身。
所以我的问题是,当生命周期范围为&#34; InstancePerRequest&#34;?
时,如何在asp.net Web表单应用程序中解析静态类中的已注册类型答案 0 :(得分:0)
要解决请求范围内的问题,您应该使用RequestLifetime
的{{1}}属性而不是IContainerProviderAccessor
ApplicatonContainer