2011-10-04 15 views
9

मैं निम्नलिखित एकता निर्माण विधि है:एकता 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()) ; 

मैं 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 सकता है हल नहीं किया जाना चाहिए। कृपया अपनी कॉन्फ़िगरेशन फ़ाइल जांचें और इस प्रकार का नाम सत्यापित करें।

विवरण: वर्तमान वेब अनुरोध के निष्पादन के दौरान एक अनचाहे अपवाद हुआ। त्रुटि के बारे में अधिक जानकारी के लिए और जहां यह कोड में उत्पन्न हुआ, कृपया स्टैक ट्रेस की समीक्षा करें।

अपवाद विवरण: System.InvalidOperationException: प्रकार का नाम या उपनाम MyProject.Web.Areas.MyApp.Common.ISession हल नहीं किया जा सकता है। कृपया अपनी कॉन्फ़िगरेशन फ़ाइल जांचें और इस प्रकार का नाम सत्यापित करें।

स्रोत त्रुटि:

लाइन 33: { लाइन 34: UnityContainer कंटेनर = नए UnityContainer(); रेखा 35: कंटेनर। लोड कॉन्फ़िगरेशन(); लाइन 36: रेखा 37: //container.RegisterType (नया कंटेनर नियंत्रित नहीं लाइफटाइम मैनेजर());

स्टैक ट्रेस: ​​

[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) चाहे आप एकता का उपयोग कर रहे हों या नहीं। –

संबंधित मुद्दे