2011-10-04 9 views
9

I次の一体構造物法持つ失敗:次にユニティloadConfiguration

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()) ; 

Iを上記のRegisterType設定をweb.configからロードするには、container.LoadConfiguration()を使用します。 動作するようには思えない

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(new ContainerControlledLifetimeManager());

スタックトレース:

[InvalidOperationException: The type name or alias MyProject.Web.Areas.MyApp.Common.ISession could not be resolved. Please check your configuration file and verify this type name.] Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolverImpl.ResolveType(String typeNameOrAlias, Boolean throwIfResolveFails) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolverImpl.cs:110 Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolver.ResolveType(String typeNameOrAlias) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolver.cs:47 Microsoft.Practices.Unity.Configuration.RegisterElement.GetRegisteringType() in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\RegisterElement.cs:121 Microsoft.Practices.Unity.Configuration.RegisterElement.ConfigureContainer(IUnityContainer container) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\RegisterElement.cs:88 Microsoft.Practices.Unity.Configuration.ContainerConfiguringElement.ConfigureContainerInternal(IUnityContainer container) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerConfiguringElement.cs:43 Microsoft.Practices.Unity.Configuration.<>c__DisplayClass1.b__0(ContainerConfiguringElement element) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerElement.cs:114 Microsoft.Practices.ObjectBuilder2.EnumerableExtensions.ForEach(IEnumerable 1 sequence, Action 1 action) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Utility\EnumerableExtensions.cs:36 Microsoft.Practices.Unity.Configuration.ContainerElement.ConfigureContainer(IUnityContainer container) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerElement.cs:110 Microsoft.Practices.Unity.Configuration.UnityConfigurationSection.Configure(IUnityContainer container, String configuredContainerName) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\UnityConfigurationSection.cs:151 Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer container, UnityConfigurationSection section, String containerName) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\UnityContainerExtensions.cs:37 Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer container) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\UnityContainerExtensions.cs:64 MyProject.Web.ApplicationContainer.CreateContainer() in C:\Workspace\MCDev\MyApp\MyApp\MyProject.Web\ApplicationContainer.cs:35 MyProject.Web.ApplicationContainer.Initialize(HttpContext context) in C:\Workspace\MCDev\MyApp\MyApp\MyProject.Web\ApplicationContainer.cs:53 MyProject.Web.MvcApplication.Application_Start() in C:\Workspace\MCDev\MyApp\MyApp\MyProject.Web\Global.asax.cs:41

答えて

10

私はそれがで見てどのような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> 
+1

アセンブリ名を必要とすることで名前を正確にどのように検索され、心に留めておいてください.NETが動作しているかどうか(http://msdn.microsoft.com/en-us/library/w3f99sx1%28v=vs.110%29.aspx) –