Riešenie plánu itinerára BRE zlyháva s výnimkou

Vzťahuje sa na
BizTalk Server 2013 Branch BizTalk Server 2013 Developer BizTalk Server 2013 Enterprise BizTalk Server 2013 Standard

Príznaky

Nasledujúca výnimka sa vyskytne s ESB 2.2 na Microsoft BizTalk Server 2013, keď sa príjmový kanál ItinerarySelectReceiveXML používa na volanie nástroja obchodných pravidiel na dynamický výber itinerára (pomocou nástroja ESB BRI Resolver).

Poznámka

Cieľ vyvolania vyvolal výnimku.

 Zdroj: Microsoft.Practices.ESB.Resolver.ResolverMgr

 Metóda: System.Collections.Generic.Dictionary'2[System.String,System.String] Resolve(Microsoft.Practices.ESB.Resolver.ResolverInfo, Microsoft.BizTalk.Message.Interop.IBaseMessage, Microsoft.BizTalk.Component.Interop.IPipelineContext)

Zdroj chyby: mscorlib

Chyba TargetSite: System.Object InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)

Error StackTrace: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, booleovský konštruktor)
   at 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)
   at Microsoft.Practices.ESB.Resolver.ResolverFactory.Create(kľúč reťazca)
   at Microsoft.Practices.ESB.Resolver.ResolverMgr.GetResolver(ResolverInfo info)
   at Microsoft.Practices.ESB.Resolver.ResolverMgr.Resolve(ResolverInfo info, IBaseMessage message, IPipelineContext pipelineContext)

        
      

Príčina

ESB Toolkit 2.2 používa Unity 2.0, ktorý vyžaduje úpravy esb.config súboru.

Riešenie

Ak chcete tento problém vyriešiť, musíte aktualizovať súbor esb.config. Ak to chcete urobiť, pred vykonaním ľubovoľnej z nasledujúcich zmien si uložte záložnú kópiu pôvodného esb.config (predvolené umiestnenie je C:\Program Files (x86)\Microsoft BizTalk ESB Toolkit). Upozorňujeme, že esb.config zmeny súborov budú vyžadovať recyklovanie procesu, ktorý používa ESB.

Existujúci súbor esb.config upravte manuálne takto:

  1. Odstránenie prvku <typeConfig>
  2. Zmena prvku <typeAlias> na <alias>
  3. Zmena prvku type> na <registráciu <>
  4. Odstránenie <prvkov kontajnera>
  5. Odstránenie prvkov typov <>
  6. Odstránenie <prvkov typeAliases>
  7. Odstránenie atribútu parameterType prvkov parametra<>.
  8. Odstráňte atribút type prvku <hodnoty> v rámci <parametra name="overrideExistingItinerary">

Všetky zmeny uvedené sa dejú v <časti esb.resolver> súboru esb.config. Nižšie je <časť esb.resolver> so všetkými vyššie uvedenými zmenami, ktoré už boli implementované.

  <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>

      

Ďalšie informácie

Ďalšie informácie o softvéri Unity 2.0 nájdete na stránke http://msdn.microsoft.com/en-us/library/ff660914(v=pandp.20).aspx