C# WebClient DownloadData-System.ArgumentException:路径不是合法形式

C# WebClient DownloadData-System.ArgumentException:路径不是合法形式,c#,path,directory,webclient,webclient-download,C#,Path,Directory,Webclient,Webclient Download,我在Winforms中使用以下代码从ftp站点下载txt文件。代码可以工作,因为我可以下载文件,但我遇到了一个异常。我的调试器正在DownloadData函数上引发异常 string versionInfoPathFTP = @"http://www.metoneftp.com/software/BCLoadCorr/version.txt"; private void check_FTP() { string currentVersion; //this progr

我在Winforms中使用以下代码从ftp站点下载txt文件。代码可以工作,因为我可以下载文件,但我遇到了一个异常。我的调试器正在
DownloadData
函数上引发异常

string versionInfoPathFTP = @"http://www.metoneftp.com/software/BCLoadCorr/version.txt";

private void check_FTP()
{
    string currentVersion;          //this programs version
    string latestVersion;           //newest version read from server

    WebClient wc = new WebClient();
    currentVersion = Application.ProductVersion.Replace(".*", "");

    try
    {
        byte[] newFileData = wc.DownloadData(versionInfoPathFTP);
        string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
        latestVersion = fileString;

        var latest = new Version(latestVersion);
        var current = new Version(currentVersion);

        var result = current.CompareTo(latest);

        if (result < 0)         //new version available
        {
            do_update_FTP(latestVersion);
        }
        else if (result == 0)   //at current latest version
        {
            labelInfo.Text = "Program is up to date! (" + latestVersion.ToString() + ")";
        }
        else                   //future version?
        {
            labelInfo.Text = "Current version is the latest!";
        }

        wc.Dispose();
    }
    catch (Exception ex)
    {
        labelInfo.Text = "No internet connection available!";
        Console.WriteLine(ex.ToString());
    }
}

有人能告诉我为什么我的URI是错误的吗?或者我的格式不正确?我尝试了几种不同版本的URI,但它们都抛出了一个异常。我试图摆脱
http://
,我试图摆脱
www
,但它似乎无法解决我的问题。

你确定是
下载数据
行引发了错误吗?未指示它可以引发此异常。当我尝试你的代码时,我只得到了一个
404
。听起来你错过了一些代码,然后你尝试将文本文件保存到其他地方,这就是引发异常的原因,但很难说。很确定引发错误的是
DownloadData
。看看堆栈跟踪,显然它调用了所有这些东西。对于文件路径,很抱歉,这是一个示例文件路径。试试这个:
http://www.metoneftp.com/software/BCLoadCorr/version.txt
我不会将文件保存在任何地方,我基本上是从文件中读取版本字符串,并使用该字符串将其与程序的当前版本进行比较,以确定是否需要更新程序。我已尝试使用您更新的代码,但无法复制错误。不幸的是,我没有其他关于错误的猜测。我完全没有得到任何错误,名为
fileString
的字符串按预期显示
1.3.0
。我无法测试之后的代码,因为您没有包括它,所以无法比较和更新版本,但问题肯定不在
WebClient
上。
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
System.ArgumentException: The path is not of a legal form.
   at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.Net.WebClient.GetUri(String path)
   at System.Net.WebClient.DownloadData(String address)
   at MetOneUpdater.UpdateControl.check_FTP() in J:\Products\Software\Automatic Software Updates\MetOneUpdater\MetOneUpdater\MetOneUpdater\UpdateControl.cs:line 65