Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 每次都会创建Unity WebApi容器_C# 4.0_Asp.net Web Api_Unity Container - Fatal编程技术网

C# 4.0 每次都会创建Unity WebApi容器

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

我正在使用WebAPI MVC4创建一个简单的web服务,我正在使用UnityWebAPI作为我的IOC,不管它在文档中说如何将其添加到应用程序_start中

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,因为现在一切正常