C#屏幕刮板-长柄uri';s
我正在构建一个html屏幕刮板,它解析URL,然后将它们与一组其他URL进行比较 使用Uri.AbsoluteUri或Uri.Host进行比较 我的问题是,当我创建一个新Uri(新Uri(url))时,当url太长或包含太多斜杠时,会引发UriFormatException 因为我的预定义url集包含几个(到)长url,所以我不能只使用子字符串来获取url的一部分 处理这个问题的最佳方法是什么 谢谢您可以使用来检查URI是否有效,然后再C#屏幕刮板-长柄uri';s,c#,screen-scraping,C#,Screen Scraping,我正在构建一个html屏幕刮板,它解析URL,然后将它们与一组其他URL进行比较 使用Uri.AbsoluteUri或Uri.Host进行比较 我的问题是,当我创建一个新Uri(新Uri(url))时,当url太长或包含太多斜杠时,会引发UriFormatException 因为我的预定义url集包含几个(到)长url,所以我不能只使用子字符串来获取url的一部分 处理这个问题的最佳方法是什么 谢谢您可以使用来检查URI是否有效,然后再新建它 你不应该得到一个例外的网址这是如此短。以下程序在VS
新建它
你不应该得到一个例外的网址这是如此短。以下程序在VS2008上运行良好:
static void Main(string[] args)
{
Uri uri = new Uri("http://stackoverflow.com/questions/1298985/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/");
Uri uri2 = new Uri("http://stackoverflow.com/questions/1298985/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/");
Console.ReadLine();
}
是的,我知道,但如果失败了,我无法将该uri与我的列表进行比较。我想要的是在创建新Uri时“禁用”这些检查。您的“过长”Uri有多长?你确定它们确实有效吗?我正在测试的uri是完全有效的,只允许使用字符。长度是277个字符。请看我的样品。它有315个字符长,不会抛出异常。你的url有多少斜杠抛出异常?我想我发现了问题。主机名包含大约200个字符。