2017-01-19 8 views
0

BizTalk 매핑에서 외부 어셈블리의 스크립트 펑 토이 드를 사용합니다. 어셈블리 참조가 추가됩니다. 이제BizTalk 스크립팅 Functoid 오류

'ScriptNS0:DoSomething()' has failed.

, 이것은이 스크립트 펑 토이 드에 대한 잘못된 것들의 숫자를 의미 할 수있다 : 매핑을 사용하는 경우, 그러나, 다음과 같은 오류가 발생합니다. 그러나 try-catch 블록이 C# 코드 전체에 배치되고 catch가 사용자 정의 예외를 throw하더라도 적절한 새로 배포하면 새로 추가 된 사용자 정의 예외가 아니라 매우 동일한 오류가 발생합니다.

이것은 매핑이 시작되었고 스크립팅 펑 토이 트에 도달하자마자 오류가 발생하지만 함수 내에서 실제로 약간의 동작도 수행하지 않았 음을 나타냅니다. 지도의 XSLT를 보면 완벽하게 잘 보였다. 외부 어셈블리에 대한 참조가 반복적으로 확인되었습니다 (이 외부 어셈블리 참조). 모든 것이 잘 보입니다. 다른 많은 매핑과 매우 흡사합니다. 그러나 여전히 결과는 위의 오류입니다.

나는 이것이 다소 모호한 질문이라는 것을 알고 있지만, 여기에 무슨 일이 일어나는 지 아무도 모른다.

+0

외부 어셈블리가 GAC에 추가되었는지 확인 했습니까? – Zee

+0

Visual Studio에서 테스트 할 때지도가 작동합니까? 지도가 오케스트레이션 또는 포트에서 사용되고 있습니까? –

+0

GAC에 있으며 매핑이 포트에서 사용되고 오케스트레이션에서 사용되는 경우 오류가 발생합니다. VS에서 테스트하는 것에 대해 확실하지 않습니다. 동일한 시스템의 콘솔 응용 프로그램에서 외부 어셈블리 참조의 코드를 시작하면 오류가 발생하지 않습니다. – HSN

답변

1

Visual Studio에서이 기능을 테스트해야합니다. 유의해야 할 몇 가지 사항은 다음과 같습니다.

  1. 실제 데이터가 예외를 유발할 가능성이 있습니다 (콘솔 응용 프로그램에서 테스트하지 않는 가장자리 또는 구석).
  2. 외부 어셈블리에서 예외를 throw하는 것이 XSLT 맵에서 항상 잘 해석되는 것은 아니며, 특히 포트에서 수행 할 때 예외가 발생합니다. IIRC는 오케스트레이션에서 좀 더 정상적으로 처리됩니다.
  3. Visual Studio 테스트 또는 단위 테스트에서이를 재현 할 수없는 경우 적절한 BtsNtSvc.exe 또는 BtsNtSvc64.exe (또는 IIS/격리 된 호스트에서 실행중인 경우 w3wp.exe)에 Visual Studio 디버거를 연결할 수 있어야합니다. 사용자 정의 함수의 입구에 중단 점을 설정하고, 단계별로 진행하십시오. 비 개발자 환경에서만 재현 할 수 있다면 원격 디버깅을 설정할 수 있는지 확인해보십시오.하지만이 경우 펑 토이 드 로깅을 향상시키고 가능한 경우 다시 배포하는 것이 좋습니다. 일반적으로

, 난 항상 정의 펑 토이 드 스크립트에서 다음을 수행하려고 :

  • 피가 예외를 던지는 - TryParse 같은 아니라 Parse보다 사용 방법 및 오류 문자열을 반환 구문 분석 오류가 발생하거나에 빈 문자열 또는 원본 문자열 (대상 시스템의 요구 사항/허용 오차에 따라 다름)을 생성합니다. 예외를 던지면 정상적으로 처리 될 가능성이 낮으며 예외 유형이나 텍스트가 사용자/관리자에게 반환되지 않을 가능성은 거의 없습니다.
  • 대신 이러한 시나리오에서 일반적으로 Windows 이벤트 로그 (System.Diagnostics.EventLog.WriteEntry)를 사용하여 오류 로깅을 수행하십시오. 제대로 등록 된 이벤트 소스를 사용하십시오. 이상적으로 응용 프로그램 이름과 일치하고 설치 프로세스에 의해 등록 된 이벤트 소스를 사용해야합니다. 그러나 이상한 예외가 발생하지 않도록 컴퓨터에있는 이벤트 소스를 하나 이상 사용하십시오! 이를 통해 개발자/관리자는 다음 번에 무슨 일이 벌어지고 있는지 빠르게 파악할 수 있습니다.