I've taken over a software project that uses the Chilkat components. We're using version 184.108.40.206 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>220.127.116.11</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:
Which matches the local file size reported under here:
ChilkatLog: PutFile: DllDate: Mar 6 2014 ChilkatVersion: 18.104.22.168 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.