This might be by design: According to the URI standard, #
is not a valid character in a URI. Thus, ftp://someServer/somePath/intro_to_c#.pdf
is not a valid URI.
What you could do is to properly escape the file name when creating the URI:
string baseUri = "ftp://someServer/somePath/";
string file = "intro_to_c#.pdf";
string myUri = baseUri + HttpUtility.UrlEncode(file);
// yields ftp://someServer/somePath/intro_to_c%23.pdf
Alternatively, you could use the UriBuilder class, which handles escaping properly:
Uri myUri = new UriBuilder("ftp", "someServer", 21, "somePath/intro_to_c#.pdf");
// yields ftp://someServer:21/somePath/intro_to_c%23.pdf