Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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# Unity loadConfiguration失败_C#_Asp.net_Unity Container - Fatal编程技术网

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(IEnumerable
1序列,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中按名称查找()的工作方式正是需要程序集名称。