2017-03-13 4 views
0

누군가 내 문제에 대한 간단한 해결책을 알고있을 것입니다. 파일의 항목을 모르므로 정적 값이 아닙니다. BizTalk GUI를 통해 변경할 수 있으며 수신 포트를 통해 URI가 있습니다. 하지만 쉽게 접근 할 수 있다고는 생각하지 않습니다. 내가하고 싶은 것은 전체 경로를 파일 이름으로 작성하는 것입니다. 이것은 파일에 특정 파일 경로 이름이 주어진 messageID와 잘 작동합니다. 그러나 파일이 삭제 된 Path-Name은 잘 작동하지 않습니다. 이 오류가 계속 발생합니다.전체 경로는 파일 이름

메시지 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

메시지 자원이 존재하지만 메시지는 문자열/메시지 테이블에서 찾을 수 없습니다 당신이이

internal static string UpdateMacroPathProperty(IBaseMessage baseMessage, string macroPathProperty, string macroDefsFile) 
{ 
    if (macroName == "MessageID") 
    { 
     contextPropertyValue = baseMessage.MessageID.ToString(); 
    } 
    else if (macroName == "SourceFileName") 
    {    
     contextPropertyValue = Directory.GetCurrentDirectory(); 
    } 
} 

내 코드에서 싹둑를 볼 수 있습니다 -Does 나에게 많은

말을하지 않습니다 특정한 생성 된 파이프 라인. 누구든지이 문제를 겪었거나 올바른 방식으로 나를 가리킬 수 있습니다.

BizTalk에는 %SourceFileName%으로 BizTalk Server: List of Macros이 내장되어 있지만이 맵은 처리되지 않도록 특정 맵 구조의 로그로 저장하려고합니다.

+0

정확히 무엇을하려고합니까? –

답변

1

어댑터에 따라 다릅니다. 일부 어댑터는이 파일 어댑터하지 않은 경우에도 FILE 어댑터의 네임 스페이스를 사용하지만 이것은 내가 이것을 위해 과거에 사용했던 논리의 종류 :

string adapterType = (string)pInMsg.Context.Read("InboundTransportType", 
    "http://schemas.microsoft.com/BizTalk/2003/system-properties"); 
string filePath = null; 

if (adapterType != null) 
{ 
    if (adapterType == "FILE") 
    { 
     filePath = (string)pInMsg.Context.Read("ReceivedFileName", 
      "http://schemas.microsoft.com/BizTalk/2003/file-properties"); 
    } 
    else if (adapterType.Contians("SFTP") && !adapterType.Contains("nsoftware")) 
    // nsoftware uses the FTP schema 
    { 
     filePath = (string)pInMsg.Context.Read("ReceivedFileName", 
      "http://schemas.microsoft.com/BizTalk/2012/Adapter/sftp-properties"); 
    } 
    else if (adapterType.Contains("FTP")) 
    { 
     filePath = (string)pInMsg.Context.Read("ReceivedFileName", 
      "http://schemas.microsoft.com/BizTalk/2003/ftp-properties"); 
    } 
} 

그리고 당신은 그냥 떨어질 수 이 중 하나에서 파일 경로를 가져올 수없는 경우 MessageID으로 이동하십시오.