Simptome
Următoarele excepţiei cu ESB 2.2 Microsoft BizTalk Server 2013 atunci ItinerarySelectReceiveXML canal este utilizat pentru a apela Business Rules Engine pentru a selecta dinamic un itinerar (utilizând ESB Resolver carmen).
Excepţie a fost lansată de țintă o invocare.
Sursă: Microsoft.Practices.ESB.Resolver.ResolverMgr Metoda: System.Collections.Generic.Dictionary'2[System.String,System.String] rezolva (Microsoft.Practices.ESB.Resolver.ResolverInfo, Microsoft.BizTalk.Message.Interop.IBaseMessage, Microsoft.BizTalk.Component.Interop.IPipelineContext) Eroare sursă: mscorlib Eroare TargetSite: System.Object InvokeMethod(System.Object, System.Object[], System.Signature, Boolean) Eroare StackTrace: la System.RuntimeMethodHandle.InvokeMethod (obiect țintă, Object [] argumente, semnătura sig, Boolean constructor) la System.Reflection.RuntimeConstructorInfo.Invoke (BindingFlags invokeAttr, Binder binder, Object [] parameters, CultureInfo culture) at System.RuntimeType.CreateInstanceImpl (BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activationAttributes, StackCrawlMark & stackMark) at System.Activator.CreateInstance (Type type, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activationAttributes) at System.Activator.CreateInstance (Type type, Object [] args) la Microsoft.Practices.ESB.Resolver.ResolverFactory.Create (String cheie) la Microsoft.Practices.ESB.Resolver.ResolverMgr.GetResolver (ResolverInfo info) la Microsoft.Practices.ESB.Resolver.ResolverMgr.Resolve (ResolverInfo info, IBaseMessage mesaj, IPipelineContext pipelineContext)
Cauza
ESB Toolkit 2.2 utilizează unitatea 2.0 care necesită modificări în fișierul esb.config.
Rezolvare
Trebuie să actualizați fișierul esb.config pentru a rezolva această problemă. Pentru aceasta, salvați o copie de rezervă a original esb.config (locația implicită este C:\Program Files (x86) \Microsoft BizTalk ESB Toolkit) înainte de a face oricare dintre următoarele modificări. Rețineți că modificările de fișier esb.config va necesita Coșul un proces care utilizează ESB.
Modificați manual fișierul existent esb.config după cum urmează:-
Eliminați elementul < typeConfig >
-
Modificaţi elementul < typeAlias > < alias >
-
Modificare elementului < tip > < înregistrați >
-
Eliminarea elementelor < containere >
-
Eliminarea elementelor < tipuri >
-
Eliminați elementele < typeAliases >
-
Eliminați atributul parameterType < param > elemente.
-
Eliminați atributul tip de element < valoare > în < param name = "overrideExistingItinerary" >
Toate modificările de mai sus au loc în secțiunea < esb.resolver > a fișierului esb.config. Mai jos se află secțiunea < esb.resolver > cu toate modificările de mai sus implementat deja.
<esb.resolver xmlns="http://schemas.microsoft.com/practices/2010/unity>"> <!-- Lifetime manager types -->
<alias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <!-- std type providers --> <alias alias="string" type="System.String, mscorlib"/> <alias alias="int" type="System.Int32, mscorlib"/> <alias alias="bool" type="System.Boolean, mscorlib"/> <!-- repository providers --> <alias alias="IRepositoryProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.Repository.IRepositoryProvider, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="SqlRepositoryProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.DataAccess.SqlRepositoryProvider, Microsoft.Practices.ESB.Resolver.Itinerary.DataAccess, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <!-- fact providers --> <alias alias="IFactProvider" type="Microsoft.Practices.ESB.Resolver.Facts.IFactProvider, Microsoft.Practices.ESB.Resolver.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="IFactTranslator" type="Microsoft.Practices.ESB.Resolver.Facts.IFactTranslator, Microsoft.Practices.ESB.Resolver.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ItineraryFactProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.ItineraryFactProvider, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ItineraryStaticFactProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.ItineraryStaticFactProvider, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ItineraryHeaderFactProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.ItineraryHeaderFactProvider, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ItineraryContentsFactProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.ItineraryContentsFactProvider, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ResolutionFactProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.ResolutionFactProvider, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="DefaultFactTranslator" type="Microsoft.Practices.ESB.Resolver.Facts.DefaultFactTranslator, Microsoft.Practices.ESB.Resolver.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ItineraryFactTranslator" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.ItineraryFactTranslator, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ItineraryContentsFactTranslator" type="Microsoft.Practices.ESB.Resolver.Itinerary.Facts.ItineraryContentsFactTranslator, Microsoft.Practices.ESB.Resolver.Itinerary.Facts, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <!-- resolve providers --> <alias alias="IResolveProvider" type="Microsoft.Practices.ESB.Resolver.IResolveProvider, Microsoft.Practices.ESB.Resolver, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <alias alias="ItineraryResolveProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.BREItineraryResolverContainer,Microsoft.Practices.ESB.Resolver.Itinerary, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 "/> <alias alias="StaticItineraryResolveProvider" type="Microsoft.Practices.ESB.Resolver.Itinerary.StaticItineraryResolveContainer,Microsoft.Practices.ESB.Resolver.Itinerary, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 "/> <!-- test containers --> <container name="BRI"> <register type="IResolveProvider" mapTo="ItineraryResolveProvider" /> <register type="IFactProvider" mapTo="ItineraryFactProvider" name="ItineraryFactProvider"> <lifetime type="singleton" /> </register> <register type="IRepositoryProvider" mapTo="SqlRepositoryProvider" name="CurrentRepositoryProvider"> <lifetime type="singleton" /> <constructor> <param name="connectionStringName"> <value value="ItineraryDb"/> </param> <param name="cacheManagerName"> <value value="Itinerary Cache Manager"/> </param> <param name="cacheTimeout"> <value value="120" /> </param> </constructor> </register> <register type="IFactTranslator" mapTo="DefaultFactTranslator" name="DefaultFactTranslator"> <lifetime type="singleton" /> </register> <register type="IFactTranslator" mapTo="ItineraryFactTranslator" name="ItineraryFactTranslator"> <lifetime type="singleton" /> <constructor> <param name="repositoryProvider"> <dependency name="CurrentRepositoryProvider"/> </param> </constructor> </register> </container> <container name="ITINERARY"> <register type="IResolveProvider" mapTo="StaticItineraryResolveProvider" /> <register type="IRepositoryProvider" mapTo="SqlRepositoryProvider" name="CurrentRepositoryProvider"> <lifetime type="singleton" /> <constructor> <param name="connectionStringName"> <value value="ItineraryDb"/> </param> <param name="cacheManagerName"> <value value="Itinerary Cache Manager"/> </param> <param name="cacheTimeout"> <value value="120" /> </param> </constructor> </register> <register type="IFactProvider" mapTo="ResolutionFactProvider" name="ResolutionFactProvider" /> <register type="IFactProvider" mapTo="ItineraryHeaderFactProvider" name="HeaderFactProvider" /> <register type="IFactProvider" mapTo="ItineraryStaticFactProvider" name="StaticFactProvider" /> <register type="IFactProvider" mapTo="ItineraryContentsFactProvider" name="ItineraryContentsFactProvider" /> <register type="IFactTranslator" mapTo="DefaultFactTranslator" name="DefaultFactTranslator"> <lifetime type="singleton" /> </register> <register type="IFactTranslator" mapTo="ItineraryFactTranslator" name="ItineraryFactTranslator"> <lifetime type="singleton" /> <constructor> <param name="repositoryProvider"> <dependency name="CurrentRepositoryProvider"/> </param> </constructor> </register> <register type="IFactTranslator" mapTo="ItineraryContentsFactTranslator" name="ItineraryContentsFactTranslator"> <lifetime type="singleton" /> <constructor> <param name="overrideExistingItinerary"> <value value="False"/> </param> </constructor> </register> </container> </esb.resolver>
Mai multe informații
Aflați mai multe informații despre unitatea 2.0 la http://msdn.microsoft.com/en-us/library/ff660914(v=pandp.20).aspx