Rebex



FAQ

Licenses

Purchase

Install And Setup

Trial Version

Support

Proxy Servers

Platforms

Samples

Exceptions

FTP Protocol Questions


Licenses

# How many license do I need?

Component is licensed on per-developer basis. You have to obtain a valid license for each human who writes the code which directly uses the component.

Back to the top...


# Do we have to pay for each copy of our software we ship that includes your component?

No. The component is licensed per-developer, not per user. Once you have purchased a license for each of your developers, you can redistribute the component DLLs with your application royalty free and to any number of end users and to any number of computers.

Back to the top...


# Is your product royalty free?

Yes.

Back to the top...


# Do I need to a special license for automated buildserver?

No. Only developers need a license.

Back to the top...


# What is support contract good for?

Support contract includes:

  • Every new version of the licensed component both major and minor.
  • Every new component released (if you have a Rebex Total Pack license).
  • Email questions answered within one business day.
  • Phone support upon request.

Support contract for the first year is included in every license of the Rebex component.

Back to the top...


# Can I use my component when the support contract expires?

Yes! (of course).

The license is perpetual. See page about Support Contracts for details.

Back to the top...


Purchase

# How can I order the product?

Different payment possibilities are described in How to order document.

If there is not suitable option for you, please contact us.

Back to the top...


Install And Setup

# How do I install and use component?

Install the package into a folder of your choice and inspect the contents.

The bin folder contains both debug and release builds of the assembly and can be either used as an application-private assembly and deployed within the directory structure of your application, or installed into GAC as a shared assembly, which can be used by multiple applications on the machine. To use the component from your project in Visual Studio, just add a reference to it!

The manual is in docs folder and code samples are in samples folder.

Back to the top...


# How do I upgrade to a new version without having to recompile all the code?

Check out this upgrading HOWTO for more information.

Back to the top...


# How do I install the component into Global Assembly Cache (GAC)?

There are two ways:

  • Start .NET Framework Configuration Management Console (Start -> Settings -> Control Panel -> Administrative Tools -> Microsoft .NET Framework Configuration).

    Then select "Assembly Cache" and click "Add an Assembly to the Assembly Cache" to add Rebex.Net.*.dll into GAC.
  • Use the gacutil command line utility. It can be usually found in Microsoft.NET\Framework\v1.*.* subfolder of the Windows folder or inside the .NET Framework SDK tree.

    See the .NET Framework SDK documentation for a full description of the options supported by gacutil.

Back to the top...


# Do I have to install the component into Global Assembly Cache to get it working?

No, you don't have to.

Rebex FTP can be used either as application-private assembly and deployed within the directory structure of your application, or installed into GAC as shared assembly, which can be used by multiple applications on the machine.

Both approaches have their pros and cons. Application-private assemblies allow simple xcopy deployment and provide complete control over assemblies that are isolated to the application. Shared assemblies load a bit faster, especially if several applications are using the same assembly simultaneously, because the code from the same location on disk can be loaded only once and shared. Installing into GAC also simplifies deploying bug fixes or security patches and upgrading to a new versions.

This decision is up to you.

Back to the top...


Trial Version

# How do I register the trial version?

When you buy Rebex FTP, you will receive an email with your login and password to a protected section of our website, where you can download the full version of the component.

Back to the top...  | More info...


# How do I upgrade from trial version to full version when I already bought the component?

First of all, you need to download the full version of your component. You can download the latest releases from the protected section of our website.

Steps to upgrade your component in your project:

  1. Remove the reference to the trial version dlls in your project.
  2. Replace trial version dlls with the full version dlls.
  3. Add reference to the new dll files to your project.
  4. Recompile your project.

Back to the top...


# How do I determine whether my DLL is a trial or full version?

To check which version your are actually using try to locate Rebex.*.dll on your disk (typically somewhere under C:\Program Files\Rebex\ or in your project folder), lookup it’s properties and check the "Version" tab (or "Details" in Windows Vista).

If the DLL is a trial version, you'll find "Trial Version" at the end of the "Description:" (or "File description" in Windows Vista) string. If the "trial version" text is missing, it's a full version DLL.

Back to the top...


Support

# What do I need to do to get upgrades or bug fixes?

If you have bought component, you can download the latest releases from the protected section of our website. You will also receive an email when a new version is released.

When you report a bug, it gets fixed as soon as we are able to identify and correct it. After the new version is tested, it appears in the protected section and a new trial version gets released as well.

Back to the top...


# What kind of support do you offer?

Email (support@rebex.net) and online forum (forum.rebex.net support is available to everyone.

Registered users with active support contract can also use a phone support (contact).

Back to the top...


Proxy Servers

# Are there any samples of using a proxy available?

Yes, our free WinFormClient sample supports all the proxies.

You can use it test that FTP for .NET or FTP/SSL for .NET works for you before you buy!

Back to the top...


# I am trying to connect through HTTP proxy and it does not work! What is wrong?

Make sure your HTTP proxy supports HTTP CONNECT method. If it doesn't, it will not work neither FTP for .NET nor FTP/SSL for .NET. Try using Socks4/Socks5 proxy instead.

There are two ways of making FTP servers accessible through HTTP proxy:

  • The first one is a special HTTP CONNECT method, which makes it possible to connect to virtually any port on any server on the Internet and therefore it can also be used to connect to FTP servers. After a connection is made, it is possible to communicate with the FTP server using the FTP protocol - the proxy only initializes the connection and does not affect the traffic. Rebex FTP for .NET and Rebex FTP/SSL for .NET does support this kind of proxies - this is the HttpConnect type proxy.
  • The second one is just an extension of a regular HTTP GET requests that makes it possible to access FTP URIs. Communication between the proxy and the FTP server is using the FTP protocol, but the communication between the proxy and a client on a computer on the local network is actually HTTP, not FTP. This is a huge limitation - only basic functionality of the FTP server can be utilized this way.

If you absolutely need to use HTTP GET, you do not need a FTP component - some decent HTTP component would be a better choice.

Back to the top...


# Does it work with Microsoft ISA Server?

Yes, it does.

Versions prior to 1.3.0.0 had problems in certan circumstances with ISA Server's HttpConnect and Socks4a proxies. It is recommended to use the latest available version of FTP for .NET or FTP/SSL for .NET.

Back to the top...


# I get an exception "Error 502 returned by a HTTP proxy (...)" when connecting through Microsoft ISA Server using HttpConnect proxy. Why?

The whole exception message is probably:

"Error 502 returned by a HTTP proxy (Proxy Error (The specified Secure Sockets Layer (SSL) port is not allowed. ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests.))."

This is caused by the default behavior of Microsoft ISA server, which only allows requests to ports 443 and 563 using its HTTP Connect method. (Primary use of HTTP Connect is to allow SSL connections to HTTPS servers).

The Microsoft Knowledge Base article Q283284 addresses this issue.

To access FTP sites through ISA server's HTTP proxy, access to all ports must be allowed. FTP's control connection port is 21 by default, but data connections can use virtually any port, because it is assigned by the FTP server. (Although allowing port 21 and ports >1024 should be enough, there might be exceptions.)

To allow connections to all ports through the HTTP proxy, following VB script must be run on the ISA server:

set isa=CreateObject("FPC.Root")
set arraypolicy=isa.Arrays.GetContainingArray.ArrayPolicy
set tprange=arraypolicy.WebProxy.TunnelPortRanges
set tmp=tprange.AddRange("FTP", 1, 65535)
tprange.Save

After the script is run and "Microsoft ISA Server Control" service is restarted, it should work.

Back to the top...


Platforms

# Can I use the Rebex FTP component in ASP.NET?

Yes, you can. ASP.NET is still just .NET code.

However, it is not as easy as in ordinary applications.

There are several things to keep in mind:

  • Using the stateful protocol such as FTP or SFTP through a stateless protocol such as HTTP can be quite complicated. In order to be able to devise the best approach to a particular scenario, a certain amount of familiarity with HTTP and FTP/SFTP is needed.
  • ASP.NET environment is multithreaded - several instances of the same page can be processed at the same time.
  • Lot of file transfer operations might take a long time to complete, especially file transfers.
  • Even Connect and Login methods may take a long time to complete, so you probably wouldn't want to call this again and again - instances of the Ftp can be made persistent using an appropriate method.

Check out the Simple FTP browser in ASP.NET sample application to get started.

Back to the top...


# Does it work with the .NET Compact Framework?

Yes, the .NET Compact Framework version is available.

Back to the top...


# I get an exception when running Rebex FTP in Visual Studio's device emulator. Why?

By default, network is not enabled in Visual Studio 2005 ad 2008's device emulator. To make it work, please follow our Configure Network in Windows Mobile / PocketPC Device Emulator guide.

Back to the top...


Samples

# Do you have any sample code on using Rebex FTP in ASP.NET?

No, not at the moment. However, it is on out list of future updates.

Back to the top...


# Do you have any examples on .......?

See the list of our free samples!

If what you need is missing, please let us know. We are constantly improving the existing samples and writing new ones.

Back to the top...


# How do I resume an aborted download or upload?

See PutResume and GetResume methods of our ConsoleClient sample. Run it and try using "putr" and "getr" commands to see it working. Read the documentation of GetFile and PutFile methods.

Back to the top...


# How do I upload or downloading a whole directory tree?

Although the component itself does not have a method for this task, it can be implemented easily using the methods provided. See PutDir method of our ConsoleClient sample on how to upload a directory tree. Downloading a tree would be easy as well with the help of our powerful Ftp.GetList method and FtpList class.

Back to the top...


Exceptions

# When I try to ......., an exception is thrown! Can you help me?

We need a bit more detailed description of what happened to be able to help you!

  • What version of Rebex FTP are you using?
  • What was the content of the stack trace of the exception?
  • Are you able to do the same action using the FTP command line client provided with Windows or Un*x?
  • Are you able to do the same action using our WinFormClient sample?
  • Are you connecting through a proxy? If so, what type of proxy is it and what software does it use?
  • Are you behind a firewall?
  • ...

Back to the top...


# Why do I get an exception when I call the Logoff method?

Because the FTP server does not support this feature.

The Logoff method sends REIN command to the FTP server. Although REIN is defined in RFC959, newer RFC1123 states it is not necessary for a server to support it. Therefore, it is unsupported by certain FTP servers and even FTP proxies.

Please note that Logoff is only needed if what you want is to log off but remain connected to the server and then login again as another user. This scenario is very rare. If what you need is just to close the connection to the server, calling Disconnect method is enough. Using Logoff is unnecessary and not recommended.

Typical FTP session looks like this:

ftp.Connect (hostname);
ftp.Login (username, password);

//... do something here ... 

ftp.Disconnect ();

Back to the top...


FTP Protocol Questions

# What is the difference between active and passive mode?

There are two TCP/IP streams used by FTP protocol - the client opens the control channel first by connecting to port 21 on the remote server. When data is to be transfered (either a single file or a file list), another channel is needed. This can be open either by the client connecting to another port on the server (passive mode) or by instructing the server to connect to a port on the client (active mode).

If a client is behind a NAT, it's often only possible to use the passive mode, which mades it generally a safer bet, although some firewalls are smart enough to allow active mode as well.

Back to the top...