ESB Toolkit BRE Itinerary Resolver Fails with Exception

חל על
BizTalk Server 2013 Branch BizTalk Server 2013 Developer BizTalk Server 2013 Enterprise BizTalk Server 2013 Standard

סימפטומים

המערכת התריעה על החריגה הבאה עם ESB 2.2 ב- Microsoft BizTalk Server 2013 כאשר צינור קבלת ItinerarySelectReceiveXML משמש לקריאה למנגנון הכללים העסקיים כדי לבחור באופן דינאמי תוכנית (באמצעות ESB BRI Resolver).

הערה

המערכת התריעה על חריגה על-ידי היעד של בקשה.

 מקור: Microsoft.Practices.ESB.Resolver.ResolverMgr

 שיטה: 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)

מקור שגיאה: mscorlib

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

Error StackTrace: בארגומנטים System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] , Signature sig, Boolean בנאי)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   ב- System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
   ב- System.Activator.CreateInstance(Type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   ב- System.Activator.CreateInstance(Type, Object[] args)
   בכתובת Microsoft.Practices.ESB.Resolver.ResolverFactory.Create(String key)
   בכתובת Microsoft.Practices.ESB.Resolver.ResolverMgr.GetResolver(ResolverInfo info)
   בכתובת Microsoft.Practices.ESB.Resolver.ResolverMgr.Resolve(ResolverInfo info, IBaseMessage message, IPipelineContext pipelineContext)

        
      

גורם

ESB Toolkit 2.2 משתמש ב- Unity 2.0 אשר דורש שינויים בקובץ esb.config שלך.

פתרון

עליך לעדכן את הקובץ esb.config כדי לפתור בעיה זו. לשם כך, שמור עותק גיבוי של ה- esb.config המקורי (מיקום ברירת המחדל הוא C:\Program Files (x86)\Microsoft BizTalk ESB Toolkit) לפני ביצוע אחד מהשינויים הבאים. שים לבesb.config שינויים בקובץ ידרשו מיחזור של התהליך המשתמש ב- ESB.

שנה באופן ידני את הקובץ esb.config באופן הבא:

  1. הסר את הרכיב <typeConfig>
  2. שינוי הרכיב <typeAlias> בכינוי <>
  3. שינוי רכיב <הסוג> לרישום <>
  4. הסרת רכיבי הגורמים <המכילים>
  5. הסרת רכיבי <> הסוגים
  6. הסרת רכיבי <TypeAliases>
  7. הסר את התכונה parameterType של רכיבי <הפרמטר> .
  8. הסר את תכונת הסוג של <רכיב> הערך בתוך <param name="overrideExistingItinerary">

כל השינויים לעיל בוצעו במקטע <esb.resolver> של קובץ esb.config שלך. להלן סעיף <esb.resolver> עם כל השינויים לעיל כבר מיושם.

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

      

מידע נוסף

מצא מידע נוסף על Unity 2.0 ב- http://msdn.microsoft.com/en-us/library/ff660914(v=pandp.20).aspx