C# 4.0 每次都会创建Unity WebApi容器
我正在使用WebAPI MVC4创建一个简单的web服务,我正在使用UnityWebAPI作为我的IOC,不管它在文档中说如何将其添加到应用程序_start中C# 4.0 每次都会创建Unity WebApi容器,c#-4.0,asp.net-web-api,unity-container,C# 4.0,Asp.net Web Api,Unity Container,我正在使用WebAPI MVC4创建一个简单的web服务,我正在使用UnityWebAPI作为我的IOC,不管它在文档中说如何将其添加到应用程序_start中 protected void Application_Start() { AreaRegistration.RegisterAllAreas(); Bootstrapper.Initialise(); WebApiConfig.Register(GlobalConfigurati
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
Bootstrapper.Initialise();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
这意味着对于创建的每个请求
public static void Initialise()
{
_container = BuildUnityContainer();
GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(_container);
}
private static IUnityContainer BuildUnityContainer()
{
_container = new UnityContainer();
// register all your components with the container here
LoggingUtilities.LoadConfigFile("ThirdParty.log4net");
ILog log = LoggingUtilities.DefaultLogger;
_container.RegisterInstance<ILog>(log);
log.InfoFormat("In BuildUnityContainer");
OpClientWrapper wrapper = new OpClientWrapper(log);
_container.RegisterInstance<OpClientWrapper>(wrapper, new ContainerControlledLifetimeManager());
return _container;
}
publicstaticvoidinitialise()
{
_container=BuildUnityContainer();
GlobalConfiguration.Configuration.DependencyResolver=新的Unity.WebApi.UnityDependencyResolver(_容器);
}
私有静态IUnityContainer BuildUnityContainer()
{
_容器=新的UnityContainer();
//在此处向容器注册所有组件
LoggingUtilities.LoadConfigFile(“ThirdParty.log4net”);
ILog log=LoggingUtilities.DefaultLogger;
_容器注册状态(日志);
log.InfoFormat(“在BuildUnityContainer中”);
OpClientWrapper=新的OpClientWrapper(日志);
_RegisterInstance(包装器,新的ContainerControlledLifetimeManager());
返回容器;
}
我希望对所有请求只创建一次我的Opclient包装,是否可能?
应用程序启动
仅在应用程序启动时触发一次(请参见下面的注释),而不是针对每个请求
请记住,以下情况可能会导致应用程序重新启动
- 线程池重新启动
- 将新DLL放入bin文件夹
- IIS重置
因此,可能是“在您观看时”导致了应用程序启动,这使得它看起来更频繁地被调用。
application\u start
在应用程序启动时只触发一次(请参见下面的注释),而不是每个请求
请记住,以下情况可能会导致应用程序重新启动
- 线程池重新启动
- 将新DLL放入bin文件夹
- IIS重置
因此,可能是“在您观看时”导致了应用程序启动,这使得它看起来好像被调用的次数更多。application\u start只被调用一次。在第一次请求我所依赖的WebService时,但每次请求我都看到对Bootstrapper.Initialise()的调用;单击该方法并查找其所有引用。:)您可能会找到多个引用。奇怪-将其发布为debug,因为现在是OK应用程序启动只调用一次。在第一次请求我所依赖的WebService时,但每次请求我都看到对Bootstrapper.Initialise()的调用;单击该方法并查找其所有引用。:)您可能会找到多个引用。奇怪-将其发布为debug,因为现在一切正常