我以点结尾的页面出现异常错误,例如:
http://www.carsireland.ie/car-dealers/county/donegal/prestige-cars-ireland-ltd
当我在Chrome浏览器中打开它时,一切正常,但是当我尝试这个时:
WebClient client = new WebClient();
html = client.DownloadString("http://www.carsireland.ie/car-dealers/county/donegal/prestige-cars-ireland-ltd.");
我明白了:
发生了'System.Net.WebException'类型的未处理异常 System.dll中
其他信息:远程服务器返回错误:(404)不是 找到。
有趣的是,这只发生在.NET framework 4上。
我有很多类似的链接,我该怎么解决?
答案 0 :(得分:0)
更新:我发现这实际上是一个已知的bug早于.NET 4.5,其中Uri类将URL与桌面上的路径相同。在桌面上,尾随时期永远不会重要,因此它被剥离。 以下是另一个Stack Overflow问题的答案: link to answer with code example
首先尝试将字符串包装在Uri对象中,就像我在下面所做的那样。下面的代码对我来说很合适。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
namespace DownloadString
{
class Program
{
static void Main(string[] args)
{
WebClient client = new WebClient();
Uri uri = new Uri("http://www.carsireland.ie/car-dealers/county/donegal/prestige-cars-ireland-ltd.");
string str = client.DownloadString(uri);
Console.WriteLine(str);
Console.ReadKey();
}
}
}
让我知道它是如何运作的!
Here is a fiddle相同的代码,以表明它的工作原理
正如您在评论中提到的,这在.NET 4.0中不起作用。我也在3.5中测试过它并没有用。
经过进一步调查后,我发现.NET 4.5之下的任何内容都会在发出请求之前删除url末尾的句点。这是一张显示Fiddler中两个http请求的图像。它们都使用相同的代码制作,但第一个使用.NET 4.0编译,&第二个是使用.NET 4.5。