Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2012-03-31
8
Medium Priority
?
1,180 Views
Last Modified: 2012-04-07
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
Comment
Question by:CIW_George
  • 5
  • 3
8 Comments
 
LVL 84

Expert Comment

by:David Johnson, CD, MVP
ID: 37792547
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
 

Author Comment

by:CIW_George
ID: 37793831
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
 
LVL 84

Expert Comment

by:David Johnson, CD, MVP
ID: 37793992
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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

Author Comment

by:CIW_George
ID: 37794037
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
 

Author Comment

by:CIW_George
ID: 37794063
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
 

Accepted Solution

by:
CIW_George earned 0 total points
ID: 37796940
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
 
LVL 84

Expert Comment

by:David Johnson, CD, MVP
ID: 37797082
I'd have working over elegant any day!
0
 

Author Closing Comment

by:CIW_George
ID: 37818669
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

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
Suggested Courses

783 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question