C# Unity loadConfiguration失败
我有以下统一构造方法:C# Unity loadConfiguration失败,c#,asp.net,unity-container,C#,Asp.net,Unity Container,我有以下统一构造方法: public static IUnityContainer CreateContainer() { UnityContainer container = new UnityContainer(); container.LoadConfiguration(); ....... } 然后是接口和实现类: namespace MyCompany.Web.Areas.MyApp.Common { public interface ISessio
public static IUnityContainer CreateContainer()
{
UnityContainer container = new UnityContainer();
container.LoadConfiguration();
.......
}
然后是接口和实现类:
namespace MyCompany.Web.Areas.MyApp.Common
{
public interface ISession
{
}
}
namespace MyCompany.Web.Areas.MyApp.Common
{
public class SessionHandler : ISession
{
}
}
而不是这样做:
Container.RegisterType<ISession, SessionHandler>(new ContainerControlledLifetimeManager()) ;
Container.RegisterType(新ContainerControlledLifetimeManager());
我想使用container.LoadConfiguration()从web.config加载上述RegisterType配置但它似乎不起作用
web.config:
<unity>
<containers>
<container>
<types>
<type type="MyCompany.Web.Areas.MyApp.Common.ISession" mapTo="MyCompany.Web.Areas.MyApp.Common.SessionHandler">
<lifetime type="singleton"/>
</type>
</types>
</container>
</containers>
</unity>
例外情况:
无法解析类型名称或别名MyProject.Web.Areas.MyApp.Common.ISession。请检查配置文件并验证此类型名称
说明:执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源
异常详细信息:System.InvalidOperationException:无法解析类型名称或别名MyProject.Web.Areas.MyApp.Common.ISession。请检查配置文件并验证此类型名称
源错误:
第33行:{
第34行:UnityContainer容器=新的UnityContainer();
第35行:container.LoadConfiguration();
第36行:
第37行://container.RegisterType(新ContainerControlledLifetimeManager())
堆栈跟踪:
[InvalidOperationException:无法解析类型名称或别名MyProject.Web.Areas.MyApp.Common.ISession。请检查配置文件并验证此类型名称。]
Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolverImpl.ResolveType(字符串typeNameOrAlias,布尔throwIfResolveFails)位于e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolverImpl.cs:110
Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolver.ResolveType(字符串typeNameOrAlias)位于e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolver.cs:47
e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\registerement.cs:121中的Microsoft.Practices.Unity.Configuration.RegisterElement.GetRegisteringType()
Microsoft.Practices.Unity.Configuration.RegisterElement.ConfigureContainer(IUnityContainer容器)位于e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\RegisterElement.cs:88
Microsoft.Practices.Unity.Configuration.ContainerConfiguringElement.ConfigureContainerInternal(IUnityContainer容器)位于e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerConfiguringElement.cs:43
Microsoft.Practices.Unity.Configuration.c\uu在e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerElement.cs:114中显示Class1.b\uu 0(ContainerConfigurangElement元素)
e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Utility\EnumerableExtensions.ForEach(IEnumerable1序列,Action
1 Action)中的Microsoft.Practices.ObjectBuilder2.EnumerableExtensions.ForEach
Microsoft.Practices.Unity.Configuration.ContainerElement.ConfigureContainer(IUnityContainer容器)位于e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerElement.cs:110
在e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\UnityConfigurationSection.cs:151中配置(IUnityContainer容器,字符串configuredContainerName)
Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer容器,UnityConfiguration节,String containerName)位于e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\UnityContainerExtensions.cs:37
Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer容器)位于e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\UnityContainerExtensions.cs:64
C:\Workspace\MCDev\MyApp\MyApp\MyApp\MyProject.Web\ApplicationContainer.CreateContainer()中的MyProject.Web.ApplicationContainer.CreateContainer():35
在C:\Workspace\MCDev\MyApp\MyApp\MyApp\MyProject.Web\ApplicationContainer.cs:53中初始化(HttpContext上下文)
C:\Workspace\MCDev\MyApp\MyApp\MyApp\MyProject.Web\Global.asax.cs:41中的MyProject.Web.mvcapapplication.Application\u Start()
我认为它不知道要查看什么dll:
<unity>
<containers>
<container>
<types>
<type type="MyCompany.Web.Areas.MyApp.Common.ISession, MyCompany" mapTo="MyCompany.Web.Areas.MyApp.Common.SessionHandler, MyCompany">
<lifetime type="singleton"/>
</type>
</types>
</container>
</containers>
</unity>
请记住,无论是否使用Unity,在.NET中按名称查找()的工作方式正是需要程序集名称。