应用对象
BizTalk Server 2013 Branch BizTalk Server 2013 Developer BizTalk Server 2013 Enterprise BizTalk Server 2013 Standard

症状

以下时引发异常与在 Microsoft BizTalk Server 2013 ESB 2.2 ItinerarySelectReceiveXML 接收管道用于调用业务规则引擎来动态选择 (使用 ESB BRI 冲突解决程序) 一条路线。

已调用的目标通过引发异常。来源︰ Microsoft.Practices.ESB.Resolver.ResolverMgr方法︰ System.Collections.Generic.Dictionary'2[System.String,System.String] 解决 (Microsoft.Practices.ESB.Resolver.ResolverInfo,Microsoft.BizTalk.Message.Interop.IBaseMessage,Microsoft.BizTalk.Component.Interop.IPipelineContext)错误源︰ mscorlib错误 TargetSite: System.Object InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)错误 StackTrace︰ 在 System.RuntimeMethodHandle.InvokeMethod 对象目标、 对象 [] 参数、 签名 sig (布尔值的构造函数)在 System.Reflection.RuntimeConstructorInfo.Invoke BindingFlags 目的、 活页夹联编程序、 对象 [] 参数 (CultureInfo 区域性)在 System.RuntimeType.CreateInstanceImpl (BindingFlags 给定、 活页夹联编程序、 对象 [] 参数、 CultureInfo 区域性、 对象 [] 试图,StackCrawlMark 和 stackMark)在 System.Activator.CreateInstance (类型、 BindingFlags 给定、 活页夹联编程序、 对象 [] 参数、 CultureInfo 区域性、 对象 [] 试图)在 System.Activator.CreateInstance (类型、 对象 [] 参数)在 Microsoft.Practices.ESB.Resolver.ResolverFactory.Create (字符串键)在 Microsoft.Practices.ESB.Resolver.ResolverMgr.GetResolver (ResolverInfo 信息)在 Microsoft.Practices.ESB.Resolver.ResolverMgr.Resolve ResolverInfo 信息,IBaseMessage 消息 (IPipelineContext pipelineContext)

原因

ESB Toolkit 2.2 使用 Unity 2.0 需要修改 esb.config 文件。

解决方案

您必须更新 esb.config 文件以解决此问题。为此,保存一份备份原始的 esb.config (默认位置为 C:\Program 文件 (x86) \Microsoft BizTalk ESB Toolkit) 之后再进行以下更改。请注意 esb.config 文件的更改,将需要使用 ESB 的进程回收。手动修改现有的 esb.config 文件如下︰

  1. 删除 < typeConfig > 元素

  2. 将 < typeAlias > 元素更改为 < 别名 >

  3. 更改 < 注册 > < 类型 > 元素

  4. 将 < 容器 > 元素移除

  5. 将 < 类型 > 元素移除

  6. 将 < typeAliases > 元素移除

  7. 删除︰ 键入 < 参数 > 元素的属性。

  8. 删除中的 < 值 > 元素的类型特性 < 参数名称"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

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。