【发布时间】:2013-03-05 23:20:30
【问题描述】:
在我的开发计算机上一切正常,但当我在另一台 Windows7 计算机上测试程序时,我得到了一个 System.UriFormatException:无效的 URI:字符串中的序列无效。 关于以下代码:Uri.UnescapeDataString(section);
起初我以为第二台计算机从开发电脑接收到不同的数据,所以我将失败的 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());
}
}
在开发电脑上工作正常,但第二台电脑再次收到异常。他们都从完全相同的ld.txt 文件加载完全相同的html,然后用它做完全相同的事情.. 两台PC 都是x64 Win7。什么给了?
【问题讨论】:
-
.NET 版本和补丁?有可能一个已修补而另一个未修补... ld.txt 中产生错误的行是什么?
-
没有检查,但应用程序是用 4.0 构建的。我会看看更新是否有帮助(如果有的话。)
-
会不会是文本编码问题?一台计算机的默认文本编码与另一台计算机不同?您是否验证了计算机 1 上的字符串
section与计算机 2 上的section完全相同?两者都运行相同版本的 .NET? -
@JimMischel 根据 notepad++ 比较插件,该部分与两台 PC 匹配。
-
如果是应用程序中的文本编码问题,使用 notepad++ 可能无法识别问题。您最好用自己的两只眼睛检查字符串。