Question:
Hi there,
I've taken over a software project that uses the Chilkat components. We're using version 9.4.1.42 having upgraded from an earlier one.
I've got an access issue with file upload using the ftp2 component. One of the client users frequently gets a 550 access denied error. Their permissions on the server seem to be correct and very occasionally they can upload. There are other users who do not have the issue.
I have tried using the software from my workstation using their connection details and it works. I have tried remoting to their workstation. The software using Chilkat does not upload but connecting to the same folder and transferring the same file using command line FTP does work.
The FTP server is Windows 2008 using IIS 7.5 with a standard FTP set up (that I can see). The server is in Australia and the client is connecting from China using a Chinese localised Windows 7. I can't see any issue with the file name created, it is all ASCII set characters, but I can't rule out something in the encoding.
I've been round and round with this and cannot see why this one client is having problems. Where else can I look for answers?
Edit update. Adding one of the Chilkat errors. Sorry it's in XML as that's what the client records at the moment. I've also substituted the IP addresses to hide them. The ccc ones are the client and the sss one the server.
<ChilkatLog>
<PutFile>
<DllDate>Aug 15 2013</DllDate>
<ChilkatVersion>9.4.1.42</ChilkatVersion>
<Architecture>Little Endian; 32-bit</Architecture>
<Language>.NET 4.0</Language>
<VerboseLogging>0</VerboseLogging>
<LocalFilename>C:\Users\Administrator\AppData\Local\Temp\ModelSync_20140319_210754.pdc</LocalFilename>
<RemoteFilename>ModelSync_20140319_210754.pdc</RemoteFilename>
<ProgressMonitoring>
<enabled>yes</enabled>
<heartbeatMs>1000</heartbeatMs>
<sendBufferSize>16384</sendBufferSize>
</ProgressMonitoring>
<IdleTimeoutMs>360000</IdleTimeoutMs>
<ReceiveTimeoutMs>60000</ReceiveTimeoutMs>
<ConnectTimeoutSeconds>20</ConnectTimeoutSeconds>
<initialGreeting>220 Microsoft FTP Service</initialGreeting>
<restartNext>0</restartNext>
<ModeZ>0</ModeZ>
<BinaryMode>1</BinaryMode>
<info>Passive transfer mode</info>
<setupPassiveDataSocket3>
<PassiveHostAddress>ccc.ccc.ccc.ccc</PassiveHostAddress>
<hostAddr>ccc.ccc.ccc.ccc</hostAddr>
<DataConnect>
<hostname>ccc.ccc.ccc.ccc</hostname>
<port>49350</port>
<ConnectTimeoutMs_1>20000</ConnectTimeoutMs_1>
<info>This is an IPV4 numeric address.</info>
<info>Hostname to IP address resolution not needed.</info>
<AddrInfoList>
<AddrInfo>
<ai_flags>4</ai_flags>
<ai_family>2</ai_family>
<ai_socktype>1</ai_socktype>
<ai_protocol>0</ai_protocol>
<ai_addrlen>16</ai_addrlen>
<ai_canonname>(NULL)</ai_canonname>
</AddrInfo>
</AddrInfoList>
<info>Connecting to IPV4 address.</info>
<ipAddress2>ccc.ccc.ccc.ccc</ipAddress2>
<myIP_5>sss.sss.sss.sss</myIP_5>
<myPort_5>11118</myPort_5>
<info>connect successful (3)</info>
<socketOptions>
<SO_SNDBUF>8192</SO_SNDBUF>
<SO_RCVBUF>8192</SO_RCVBUF>
<TCP_NODELAY>0</TCP_NODELAY>
</socketOptions>
</DataConnect>
</setupPassiveDataSocket3>
<SetupPassiveDataSocket>Elapsed time: 468 millisec</SetupPassiveDataSocket>
<command>STOR</command>
<PutFilename>[ModelSync_20140319_210754.pdc]</PutFilename>
<DataConnectionReady>Elapsed time: 0 millisec</DataConnectionReady>
<StorResponse>550 Access is denied.</StorResponse>
<error>STOR failed</error>
<remoteFtpFile>ModelSync_20140319_210754.pdc</remoteFtpFile>
<FtpResponse24>550 Access is denied.</FtpResponse24>
<TotalTime>Elapsed time: 468 millisec</TotalTime>
<error>Failed.</error>
</PutFile>
</ChilkatLog>
Second edit, the software using the component is VB.Net using the 4.0 framework. It's a windows forms application.
Third edit, new log event:
I've set verbose logging on the Chilkat client and I've noticed that my log is reporting a data transfer of:
BytesTransferred: 68585558
Which matches the local file size reported under here:
ChilkatLog:
PutFile:
DllDate: Mar 6 2014
ChilkatVersion: 9.5.0.16
Architecture: Little Endian; 32-bit
Language: .NET 4.0
VerboseLogging: 1
LocalFilename: C:\Documents and Settings\Administrator\Local Settings\Temp\ModelSync_20140401_201056.pdc
RemoteFilename: ModelSync_20140401_201056.pdc
ProgressMonitoring:
enabled: yes
heartbeatMs: 1000
sendBufferSize: 32768
--ProgressMonitoring
IdleTimeoutMs: 360000
ReceiveTimeoutMs: 60000
ConnectTimeoutSeconds: 20
uploadFromLocalFile:
localFileSize: 68585558
uploadFromDataSource:
initialGreeting: 220 Microsoft FTP Service
restartNext: 0
modeZ: 0
binaryMode: 1
setupDataConnection:
active transfer mode
setupActiveDataSocket:
Using ephemeral port range for Active data connection.
bindSockAddr: 0200 0000 0000 0000 0000 0000 0000 0000
Socket bind successful.
dataPort: 17273
portIpAddress: ccc.ccc.ccc.ccc
MyIPv4: -
sendCommand:
sendingCommand: PORT -
--sendCommand
readCommandResponse:
replyLineQP: 200 PORT command successful.
commandResponse: 200 PORT command successful.
statusCode: 200
readResponse: Elapsed time: 203 millisec
--readCommandResponse
PortCmd: Elapsed time: 219 millisec
--setupActiveDataSocket
setupActiveDataSocket: Elapsed time: 219 millisec
--setupDataConnection
sendUploadCommand:
sendCommand:
sendingCommand: STOR ModelSync_20140401_201056.pdc
--sendCommand
--sendUploadCommand
acceptDataConnection:
Data connection accepted.
AcceptDataConnection: Elapsed time: 203 millisec
--acceptDataConnection
Reading intermediate response...
readCommandResponse:
replyLineQP: 550 Access is denied.
commandResponse: 550 Access is denied.
statusCode: 550
readResponse: Elapsed time: 0 millisec
--readCommandResponse
intermediateResponseStatusCode: 550
intermediateReply: 550 Access is denied.
sendUploadFileData:
sendBufferSize: 32768
Sending uncompressed...
sendOnSocketFromSource:
socket is not ready for writing;
idleTimeoutMs: 360000
Socket send idle timeout
Failed to send on socket from source.
--sendOnSocketFromSource
lastBytesSent: 9B21B235A9B4DC9463568D2A899B76CC
Failed to upload data.
UploadData: Elapsed time: 381187 millisec
--sendUploadFileData
closingDataConnection:
terminateConnection:
Timeout waiting to read socket or accept connection
timeoutMs: 360000
Terminated TCP connection.
--terminateConnection
--closingDataConnection
skipFinalReply: 1
--uploadFromDataSource
--uploadFromLocalFile
TotalTime: Elapsed time: 741609 millisec
Failed.
--PutFile
--ChilkatLog
So it looks like the client sends, but then get's denied access. There is no temporary file that I can see in the target directory but I don't know if IIS FTP stores incoming files somewhere else before moving to the target, I can't find any mention of this. Can anyone notice anything odd in the logs here? Thanks.
Regards Damien