在我的代码中,我不确定解决此问题的最佳方法:
var correctedUrl = Helpers.CorrectUrl(eLink);
string[] splitAndCheckExtension = correctedUrl.Split('.');
if ((Helpers.returnExtensionsAvailable(splitAndCheckExtension[1].ToString()) == true))
{
此部分:splitAndCheckExtension[1].ToString()
只是一个网址扩展名(例如.com / .net等)。
错误是:索引超出了数组的范围,只有在输入格式错误的URL时才会发生这种情况,例如:http://www.www.intera。
功能代码:
public static bool returnExtensionsAvailable(string extension)
{
string[] ex = new string[] { "com", "com.pl", "net", "org", "pl", "info", "de", "ca", "co.uk", extension};
if (ex.Contains(extension))
{
return true;
} else {
return false;
}
}
我不确定如何修复它。
答案 0 :(得分:1)
简短的回答是,在使用splitAndCheckExtension.Length
之前,您应该检查splitAndCheckExtension[1].ToString()
,因为它可能只包含零个或一个元素,在这种情况下[1]
超出了数组的范围。< / p>
也就是说,使用您提供的示例网址(https://dotnetfiddle.net/Nyu1aq),您的代码似乎运行正常。如果URL不包含任何.
个字符,那么您可以按预期获得索引超出范围的异常。
要解决此问题,请将if
语句更改为以下内容:
if (splitAndCheckExtension.Length > 1 &&
(Helpers.returnExtensionsAvailable(splitAndCheckExtension[1].ToString()) == true))