Configuration Can';t从unity配置文件解析类型
试图通过XML配置设置Unity,我遇到了这个异常Configuration Can';t从unity配置文件解析类型,configuration,web-config,unity-container,app-config,Configuration,Web Config,Unity Container,App Config,试图通过XML配置设置Unity,我遇到了这个异常 The type name or alias ServiceHost could not be resolved. Please check your configuration file and verify this type name. 试着注释一下,下一个和下一个都会出现同样的异常,所以问题一定出在我的设置中的某个地方 <unity> <typeAliases> <!-- Lifet
The type name or alias ServiceHost could not be resolved. Please check your configuration file and verify this type name.
试着注释一下,下一个和下一个都会出现同样的异常,所以问题一定出在我的设置中的某个地方
<unity>
<typeAliases>
<!-- Lifetime manager types -->
<typeAlias alias="singleton"
type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,
Microsoft.Practices.Unity" />
<typeAlias alias="external"
type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager,
Microsoft.Practices.Unity" />
<typeAlias alias="perThread"
type="Microsoft.Practices.Unity.PerThreadLifetimeManager,
Microsoft.Practices.Unity" />
<!-- User-defined type aliases -->
<typeAlias alias="ServiceHost"
type="System.ServiceModel.ServiceHost, System.ServiceModel" />
<typeAlias alias="UnityServiceHost"
type="MyProjectServiceLibrary.Hosting.UnityServiceHost" />
<typeAlias alias="IServiceBehavior"
type="System.ServiceModel.Descriptions.IServiceBehavior, System.ServiceModel" />
<typeAlias alias="UnityServiceBehavior"
type="MyProjectServiceLibrary.Hosting.UnityServiceBehavior, MyProjectServiceLibrary" />
<typeAlias alias="IInstanceProvider"
type="System.ServiceModel.Dispatcher.IInstanceProvider, System.ServiceModel" />
<typeAlias alias="UnityInstanceProvider"
type="MyProjectServiceLibrary.Hosting.UnityInstanceProvider, MyProjectServiceLibrary" />
<typeAlias alias="MyProjectService"
type="MyProjectServiceLibrary.Service.MyProjectService, MyProjectServiceLibrary" />
<typeAlias alias="IRepositoryFactory"
type="MyProjectDataModelLibrary.Repository.IRepositoryFactory, MyProjectDataModelLibrary" />
<typeAlias alias="RepositoryFactory"
type="MyProjectDataModelLibrary.Repository.RepositoryFactory, MyProjectDataModelLibrary" />
<typeAlias alias="IDbContext"
type="MyProjectDataModelLibrary.DataContext.IDbContext, MyProjectDataModelLibrary" />
<typeAlias alias="MyProjectDatabase"
type="MyProjectDataModelLibrary.DataContext.MyProjectDatabase, MyProjectDataModelLibrary" />
<typeAlias alias="IRepositoryOfT"
type="MyProjectDataModelLibrary.Repository.IRepository`1, MyProjectDataModelLibrary" />
<typeAlias alias="EntityRepositoryOfT"
type="MyProjectDataModelLibrary.Repository.EntityRepository`1, MyProjectDataModelLibrary" />
</typeAliases>
<containers>
<container>
<types>
<type type="MyProjectService" />
<type type="ServiceHost"
mapTo="UnityServiceHost" />
<type type="IServiceBehavior"
mapTo="UnityServiceBehavior" />
<type type="IInstanceProvider"
mapTo="UnityInstanceProvider" />
<type type="IRepositoryFactory"
mapTo="RepositoryFactory" />
<type type="IDbContext"
mapTo="MyProjectDatabase" />
<type type="IRepositoryOfT"
mapTo="EntityRepositoryOfT" />
</types>
</container>
</containers>
</unity>
我试着四处阅读,看看我做错了什么。我怀疑这是一个完全限定的名字,尽管我不能确定,因为我以前从未真正使用过这个名字
IUnityContainer container = new UnityContainer();
container.RegisterInstance<IUnityContainer>(container);
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(container);
IUnityContainer container=newunitycontainer();
容器。注册表状态(容器);
UnityConfiguration节=(UnityConfiguration节)ConfigurationManager.GetSection(“unity”);
配置(容器);
异常在这里的最后一行抛出。因为您引用的是系统类型,所以它很可能试图从GAC中提取这些类型。在这种情况下,您需要使用完全限定的程序集名称,包括版本号、区域性和公钥标记。大概是这样的:
<typeAlias alias="ServiceHost"
type="System.ServiceModel.ServiceHost, System.ServiceModel,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089,
processorArchitecture=MSIL" />
当然,您需要查找您正在使用的.NET版本的适当版本和公钥令牌。您正在使用的Unity版本是什么?看起来像1.2,但只是想验证一下。类型缺少程序集名称感谢您指出这一点。但这似乎不是问题所在,因为他对每种类型都抛出了异常。然后,你必须以艰难的方式解决它:删除除一个映射之外的所有映射,使该映射正常工作,再添加一个映射,然后重复。对于没有代码帮助的人来说,“MyProject”的映射太多了。