Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1195
  • Last Modified:

How to FTP through Dynamic DNS Service (DynDNS) using VB .NET 3.5?

I am successfully using FtpWebRequest to transfer files between the local computer and my web site (hosted off-site).

            ftpReq = FtpWebRequest.Create(str_URL)
            ftpReq.KeepAlive = False
            ftpReq.Credentials = New NetworkCredential(p_str_User_ID, p_str_Password)
            ftpReq.Method = WebRequestMethods.Ftp.ListDirectory
            ftpReq.Proxy = Nothing
            ftpReq.UsePassive = False
            ftpReq.Timeout = p_int_Timeout

            Dim sr As New StreamReader(ftpReq.GetResponse().GetResponseStream())

I can remotely access the office server (a DNS-323) using the connection string "ftp://<userID>:<password>@<ipAddress>:<port>/".  The office is served via Verizon FIOS and gets a dynamic DNS assigned at the whim of Verizon.

I would like to accomplish the same thing through DynDNS remote access.  I can successfully do this through IE9 using the connection string "ftp://<myHostName>.dnsalias.com:<port>/".

HOWEVER, when I try this using FtpWebRequest, I get the message "The data connection was made from an address that is different than the address to which the ftp connection was made".

How do I need to tweak FtpWebRequest to make this work?

Thank you in advance for your help!

George
0
CIW_George
Asked:
CIW_George
  • 5
  • 3
1 Solution
 
David Johnson, CD, MVPOwnerCommented:
This will be fixed in NETFX 4.0. FtpWebRequest will ignore the IP address from the PASV response string. This will be similar behavior to the IPv6 EPSV response string. We will continue to connect to the original IP address given in the Uri to the request.
http://connect.microsoft.com/VisualStudio/feedback/details/97409/ftpwebre
0
 
CIW_GeorgeAuthor Commented:
Ok...

You're referring to NETFX 4.0 in the future tense, even though the ISO image has a release date of 5/19/2010 (almost two years ago).

Does that mean that this "problem" has not been "fixed" yet?  I've seen a number of posts indicating that this problem may still exist in 4.0, but I'm not sure about the credibility of those reporting this.

I would hate to have my clients be forced to install NETFX 4.0 (assuming the problem has been fixed) just to support the FtpWebRequest and ignore the IP address from the PASV response string.

Is there an "Option 3.5 Solution" floating around that is compatible with .NET 3.5?

Or am I missing something here?

Thank you.

George
0
 
David Johnson, CD, MVPOwnerCommented:
Try it and see if it has been fixed. There is conflicting claims, one being that it will not be fixed due to security concerns. We decided not to support this scenario for security reasons (transparently connecting to a host other than the one specified by the application). (2005 response), the other saying that it will be fixed (2009)
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
CIW_GeorgeAuthor Commented:
I suppose I could install VS 2010, which I did purchase a while ago but I've been quite happy with VS 2008.

And then I could install NETFX 4.0, which I just downloaded.

Other than being the only means to support NETFX 4.0, which may or may not address the FtpWebRequest issue, I have no real motivation to install VS 2010 at this time.

Maybe after the weekend, somebody will step forward and say "yup, it's working great in NETFX 4.0", or "nope, still the same old problems as in 3.5."

That's kinda' the answer I'm looking for.  Or a 3.5 solution.

George
0
 
CIW_GeorgeAuthor Commented:
The following was posted by an individual about six weeks (7/1/2009) after the the quote you provided from the Microsoft Network Class Library Team (5/21/2009):

"I have downloaded NETFX 4.0 and Visual Studio 2010 Beta version to try out if the fix has been implemented. The exception is still being thrown."

And another post on Microsoft Connect on 4/19/2011:

"So no fix and no workaround. Hopeless."

Still looking for information less than a year old...
0
 
CIW_GeorgeAuthor Commented:
Solution (at least for me):

    Dim p_Ping as New Ping
    Dim p_Reply as PingReply
    dim str_IP_Address as String

    p_Reply = p_Ping.Send(<myHostName>.dnsalias.com)

    str_IP_Address = p_Reply.Address.ToString

Now str_IP_Address contains the "real" IP address of the FTP server and FtpWebRequest can be used with str_IP_Address and without exceptions being thrown.

Problem solved within the limitations of .NET 3.5.
0
 
David Johnson, CD, MVPOwnerCommented:
I'd have working over elegant any day!
0
 
CIW_GeorgeAuthor Commented:
The answers provded by others were simply Microsoft "promises" - no solution was provided.

My  solution is probably not the most glamorous, and maybe not the best solution, but it answers the original question.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now