증상
ItinerarySelectReceiveXML는 받으면 ESB 2.2 Microsoft BizTalk Server 2013에 다음과 같은 예외가 throw 됩니다 파이프라인 프로그램 일정표 (ESB BRI 해결 프로그램을 사용 하 여)를 동적으로 선택 하 여 비즈니스 규칙 엔진을 호출 하는 데 사용 됩니다.
호출의 대상에서 예외가 throw 되었습니다.
원본: 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 invokeAttr, 바인더 바인더, 매개 변수 개체, CultureInfo culture)에 System.RuntimeType.CreateInstanceImpl (BindingFlags bindingAttr, 바인더 바인더, Object args, CultureInfo culture, StackCrawlMark 및 stackMark 개체 activationAttributes)에 System.Activator.CreateInstance (type, BindingFlags bindingAttr, 바인더 바인더, Object args, CultureInfo culture, 개체 activationAttributes)에 System.Activator.CreateInstance (type, Object args)에 Microsoft.Practices.ESB.Resolver.ResolverFactory.Create (String 키)에 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 Files (x86) \Microsoft BizTalk ESB Toolkit은) 다음 변경 사항을 적용 하기 전에. 참고 esb.config 파일 변경 ESB를 사용 하는 프로세스의 재생을 해야 합니다.
수동으로 기존 esb.config 파일을 다음과 같이 수정 합니다.-
< TypeConfig > 요소를 제거 합니다.
-
< 별칭 > < typeAlias > 요소를 변경 합니다.
-
< 등록 > < 종류 > 요소를 변경 합니다.
-
< 컨테이너 > 요소를 제거 합니다.
-
< 종류 > 요소를 제거 합니다.
-
< TypeAliases > 요소를 제거 합니다.
-
< Param > 요소의 입력 특성을 제거 합니다.
-
내에서 < 값 > 요소의 type 특성을 제거 합니다. < param 이름을 "overrideExistingItinerary" = >
위의 변경 내용을 아무것도 esb.config 파일의 < esb.resolver > 섹션 내에서. 다음은 모든 변경 이미 구현 된 < 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