Uri.UnescapeDataString在其他计算机上失败

本文关键字:失败 计算机 其他 UnescapeDataString Uri | 更新日期: 2023-09-27 18:02:32

在我的开发计算机上一切都工作得很好,但当我在不同的Windows7计算机上测试程序时,我得到了System.UriFormatException: 无效的URI:字符串中有一个无效的序列。在以下代码上:Uri.UnescapeDataString(section);

起初,我认为第二台计算机正在从dev 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());
    }
}

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

Uri.UnescapeDataString在其他计算机上失败

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("%"));
    }
}