System.ArgumentOutOfRangeException StartIndex不能小于零get on服务器,on localhost没有错误

时间:2016-03-12 17:47:05

标签: c# indexoutofboundsexception

我有一个非常奇怪的问题,我从其他网站下载html(这不是非法的)。

string img_1 = startHTML.Substring(startHTML.IndexOf("img"));

它工作得很完美,但突然停止并显示此错误:

  

System.ArgumentOutOfRangeException:StartIndex不能小于零。参数名称:位于System.String.Substring(Int32 startIndex)的System.String.InternalSubStringWithChecks(Int32 startIndex,Int32 length,Boolean fAlwaysCopy)的startIndex

奇怪的是,在localhost上它仍在工作。

我知道这个错误意味着什么,以及如何处理它,但这次完全不同。

try
    {

        string img_1 = startHTML.Substring(startHTML.IndexOf("img"));
        img_1 = img_1.Substring(0, img_1.IndexOf("</div>"));

        if (img_1.Contains("<a href="))
        {


        }
        else
        {
            string img_3 = "";
            string img_7 = img_1.Substring(img_1.IndexOf("src="));

            string img_2 = img_7.Substring(0, img_7.IndexOf(".jpg") + 4);
            img_3 = img_2.Substring(img_2.IndexOf("src=\"") + 5);
            img_3 = img_3.Trim();

            lastImage = img_3;
        }
    }
    catch (Exception ee)
    {
        try
        {
            string img_1 = startHTML.Substring(startHTML.IndexOf("class=\"poster\""));
            img_1 = img_1.Substring(0, img_1.IndexOf("</div>"));

            if (img_1.Contains("<a href="))
            {

            }
            else
            {
                string img_3 = "";
                string img_7 = img_1.Substring(img_1.IndexOf("src="));

                string img_2 = img_7.Substring(0, img_7.IndexOf(".jpg") + 4);
                img_3 = img_2.Substring(img_2.IndexOf("src=\"") + 5);
                img_3 = img_3.Trim();
                lastImage = img_3;
            }

            lblMsg.Text = "NO IMAGE! " + Convert.ToString(ee);
        }
        catch(Exception eeеее)
        {
            lblMsg.Text = "NO IMAGE! " + Convert.ToString(eeеее);
        }
    }

    return lastImage;

在第一次尝试上的 localhost 上,没有 catch 。但是在服务器上,第二个尝试会遇到此问题,并且不应该进行第二次尝试,因为第一次尝试< / strong> on localhost执行正确

我在这里红了并在谷歌搜索,但没有找到任何东西。可能是一些文化问题,如果是的话,有人可以在哪里阅读如何修复它?并且有可能, startHTML 字符串在第二次尝试时变为空我复制错误并将其粘贴到谷歌上。我在第一页打开了所有链接。但没有人回答我的问题。

1 个答案:

答案 0 :(得分:1)

这意味着您传递给搜索的文本不再包含搜索字符串,即“img”

要解决此问题,请在方法调用之外调用IndexOf,将其结果分配给变量,并在将其用作索引之前将其检查为-1:

var pos = string img_1 = startHTML.IndexOf("img");
if (pos >= 0) {
    string img_1 = startHTML.Substring(Pos);
    ...
}