6

在我的开发计算机上,一切正常且花花公子,但是当我在另一台 Windows7 计算机上测试程序时,我得到一个System.UriFormatException无效的 URI:字符串中的序列无效。在以下代码上:Uri.UnescapeDataString(section);

起初我以为第二台计算机正在从开发 pc 接收不同的数据,所以我将失败的 html 字符串复制到文件并将我的代码简化为:

static void Err(string s){/*Picked up by external logging*/}

private static void GetValue()
{
    try
    {
        var html = File.ReadAllText("ld.txt");

        //Retrieve section we want
        var section = Regex.Match(
            html,
            "etc_etc(.*): ",
            RegexOptions.Singleline)
                                .Groups[1].ToString();

        Uri.UnescapeDataString(section);
    }
    catch (Exception ex)
    {
        Err(ex.ToString());
    }
}

在开发电脑上工作正常,但第二台电脑再次收到异常。他们都从完全相同的文件加载完全相同的html ld.txt,然后用它做完全相同的事情..并且两台PC都是x64 Win7。是什么赋予了?

4

1 回答 1

9

UnescapeDataString 似乎在 CLR 4.0 和 4.5 之间发生了变化

我可以在两台安装了不同版本的 .Net 的机器上重现这一点(即使编译为目标 .Net 4.0)。

您的开发机器上是否有 VS 2012(因此是 .Net 4.5)而另一台计算机上只有 .Net 4?

此代码在 .Net 4.0 上引发异常,在 .Net 4.5 上传递

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("CLR version: " + Environment.Version);
        Console.WriteLine(Uri.UnescapeDataString("%"));
    }
}
于 2013-06-12T11:04:16.513 回答