在我的开发计算机上,一切工作正常,花花公子但是当我在另一台Windows7计算机上测试程序时,我得到一个System.UriFormatException
:无效的URI:字符串中有一个无效的序列。 / em>在以下代码中: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());
}
}
在dev pc上工作正常,但第二台计算机再次收到异常。他们都从完全相同的ld.txt
文件中加载完全相同的html,然后用它做同样的事情......两台PC都是x64 Win7。是什么给了什么?
答案 0 :(得分:8)
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("%"));
}
}