UnityWebActivator.start() 如何在 asp.net 应用程序中被调用
How does UnityWebActivator.start() get called in asp.net app
我想了解 Unity IoC 在我的 Web 应用程序中的工作原理。我使用 visual studio 2015 项目模板创建了一个 mvc&api 应用程序。
我使用 NuGet 安装了 Unity。修改了 Unity 配置以注册我想要注入的类型。我最初将 UnityWebActivator.start() 添加到我的 global.asax 文件中,认为它必须在启动时存在,但是当我将其注释掉时,一切仍然有效。
如何调用 UnityWebActivator 来为统一配置新的 IoC 容器?
using System.Linq;
using System.Web.Mvc;
using Microsoft.Practices.Unity.Mvc;
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Shutdown")]
namespace WebDirectory.App_Start
{
/// <summary>Provides the bootstrapping for integrating Unity with ASP.NET MVC.</summary>
public static class UnityWebActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
// TODO: Uncomment if you want to use PerRequestLifetimeManager
// Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
/// <summary>Disposes the Unity container when the application is shut down.</summary>
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
}
WebActivatorEx.PreApplicationStartMethod 在应用程序初始化期间尽早调用启动方法。您会注意到还有一个在应用程序结束时调用的关闭方法。
我想了解 Unity IoC 在我的 Web 应用程序中的工作原理。我使用 visual studio 2015 项目模板创建了一个 mvc&api 应用程序。
我使用 NuGet 安装了 Unity。修改了 Unity 配置以注册我想要注入的类型。我最初将 UnityWebActivator.start() 添加到我的 global.asax 文件中,认为它必须在启动时存在,但是当我将其注释掉时,一切仍然有效。
如何调用 UnityWebActivator 来为统一配置新的 IoC 容器?
using System.Linq;
using System.Web.Mvc;
using Microsoft.Practices.Unity.Mvc;
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Shutdown")]
namespace WebDirectory.App_Start
{
/// <summary>Provides the bootstrapping for integrating Unity with ASP.NET MVC.</summary>
public static class UnityWebActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
// TODO: Uncomment if you want to use PerRequestLifetimeManager
// Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
/// <summary>Disposes the Unity container when the application is shut down.</summary>
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
}
WebActivatorEx.PreApplicationStartMethod 在应用程序初始化期间尽早调用启动方法。您会注意到还有一个在应用程序结束时调用的关闭方法。