Dan Cagney
2005-11-09 19:21:51 UTC
I'm having an issue creating an FTP Receive Location using WMI. The location
is created successfully, and the location even polls the FTP site, but when I
check the location's log that logs all of the FTP commands, the second to
last command is LIST *.*, which returns the files I want to retrieve, and
then a QUIT. There is never a RETR. If I create the exact same Receive
Location using the BizTalk Explorer, it works correctly. I have even
compared the CustomCfg of both to make sure they are exact. Are there extra
properties that need to be set that I'm missing? Any help would be
appreciated. I am including the code I used to create the Receive Location.
Thanks,
Dan
Public Function CreateFTPReceiveLocation(ByVal inReceiveLocationName As
String, ByVal inReceivePortName As String, ByVal inHostName As String, ByVal
inServer As String, ByVal inPort As Integer, ByVal inFolder As String, ByVal
inFileMask As String, ByVal inRecLocStatus As ReceiveLocationStatus, ByVal
inUserName As String, ByVal inPassword As String, ByVal inMaxFileSize As
Integer) As Boolean
Try
Dim objReceiveLocationClass As New
ManagementClass("root\MicrosoftBizTalkServer", "MSBTS_ReceiveLocation",
Nothing)
Dim objReceiveLocation As ManagementObject =
objReceiveLocationClass.CreateInstance()
objReceiveLocation("Name") = inReceiveLocationName
objReceiveLocation("ReceivePortName") = inReceivePortName
objReceiveLocation("AdapterName") = "FTP"
objReceiveLocation("HostName") = inHostName
objReceiveLocation("InboundTransportURL") = "ftp://" & inServer
& ":" & inPort & "/" & inFolder & "/" & inFileMask
'objReceiveLocation("CustomCfg") = "<CustomProps><AdapterConfig
vt=""8""><Config xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><uri>" & "ftp://" &
inServer & ":" & inPort & "/" & inFolder & "/" & inFileMask &
"</uri><serverAddress>" & inServer & "</serverAddress><serverPort>" & inPort
& "</serverPort><userName>" & inUserName & "</userName><password>" &
inPassword & "</password><fileMask>" & inFileMask &
"</fileMask><targetFolder>" & inFolder &
"</targetFolder><representationType>binary</representationType><maximumBatchSize>0</maximumBatchSize><maximumNumberOfFiles>0</maximumNumberOfFiles><passiveMode>False</passiveMode><firewallType>NoFirewall</firewallType><firewallPort>21</firewallPort><pollingUnitOfMeasure>Seconds</pollingUnitOfMeasure><pollingInterval>60</pollingInterval><errorThreshold>10</errorThreshold><maxFileSize>0</maxFileSize></Config></AdapterConfig></CustomProps>"
objReceiveLocation("PipelineName") =
ConfigurationSettings.AppSettings("PipelineName")
Dim options As New PutOptions
options.Type = PutType.CreateOnly
objReceiveLocation.Put(options)
ReceiveLocationEnable(inReceiveLocationName, inRecLocStatus)
System.Console.WriteLine("ReceiveLocation - " +
inReceiveLocationName + " - has been created successfully")
Return True
Catch excep As Exception
Throw New Exception("CreateFTPReceiveLocation - " +
inReceiveLocationName + " - failed: " + excep.Message)
System.Console.WriteLine("CreateFTPReceiveLocation - " +
inReceiveLocationName + " - failed: " + excep.Message)
End Try
is created successfully, and the location even polls the FTP site, but when I
check the location's log that logs all of the FTP commands, the second to
last command is LIST *.*, which returns the files I want to retrieve, and
then a QUIT. There is never a RETR. If I create the exact same Receive
Location using the BizTalk Explorer, it works correctly. I have even
compared the CustomCfg of both to make sure they are exact. Are there extra
properties that need to be set that I'm missing? Any help would be
appreciated. I am including the code I used to create the Receive Location.
Thanks,
Dan
Public Function CreateFTPReceiveLocation(ByVal inReceiveLocationName As
String, ByVal inReceivePortName As String, ByVal inHostName As String, ByVal
inServer As String, ByVal inPort As Integer, ByVal inFolder As String, ByVal
inFileMask As String, ByVal inRecLocStatus As ReceiveLocationStatus, ByVal
inUserName As String, ByVal inPassword As String, ByVal inMaxFileSize As
Integer) As Boolean
Try
Dim objReceiveLocationClass As New
ManagementClass("root\MicrosoftBizTalkServer", "MSBTS_ReceiveLocation",
Nothing)
Dim objReceiveLocation As ManagementObject =
objReceiveLocationClass.CreateInstance()
objReceiveLocation("Name") = inReceiveLocationName
objReceiveLocation("ReceivePortName") = inReceivePortName
objReceiveLocation("AdapterName") = "FTP"
objReceiveLocation("HostName") = inHostName
objReceiveLocation("InboundTransportURL") = "ftp://" & inServer
& ":" & inPort & "/" & inFolder & "/" & inFileMask
'objReceiveLocation("CustomCfg") = "<CustomProps><AdapterConfig
vt=""8""><Config xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><uri>" & "ftp://" &
inServer & ":" & inPort & "/" & inFolder & "/" & inFileMask &
"</uri><serverAddress>" & inServer & "</serverAddress><serverPort>" & inPort
& "</serverPort><userName>" & inUserName & "</userName><password>" &
inPassword & "</password><fileMask>" & inFileMask &
"</fileMask><targetFolder>" & inFolder &
"</targetFolder><representationType>binary</representationType><maximumBatchSize>0</maximumBatchSize><maximumNumberOfFiles>0</maximumNumberOfFiles><passiveMode>False</passiveMode><firewallType>NoFirewall</firewallType><firewallPort>21</firewallPort><pollingUnitOfMeasure>Seconds</pollingUnitOfMeasure><pollingInterval>60</pollingInterval><errorThreshold>10</errorThreshold><maxFileSize>0</maxFileSize></Config></AdapterConfig></CustomProps>"
objReceiveLocation("PipelineName") =
ConfigurationSettings.AppSettings("PipelineName")
Dim options As New PutOptions
options.Type = PutType.CreateOnly
objReceiveLocation.Put(options)
ReceiveLocationEnable(inReceiveLocationName, inRecLocStatus)
System.Console.WriteLine("ReceiveLocation - " +
inReceiveLocationName + " - has been created successfully")
Return True
Catch excep As Exception
Throw New Exception("CreateFTPReceiveLocation - " +
inReceiveLocationName + " - failed: " + excep.Message)
System.Console.WriteLine("CreateFTPReceiveLocation - " +
inReceiveLocationName + " - failed: " + excep.Message)
End Try