C# System.ArgumentOutOfRangeException StartIndex不能小于零在服务器上,在本地主机上获取无错误

C# System.ArgumentOutOfRangeException StartIndex不能小于零在服务器上,在本地主机上获取无错误,c#,indexoutofboundsexception,C#,Indexoutofboundsexception,我有一个非常奇怪的问题,我正在从其他网站下载html(这并不违法) 它工作正常,但突然停止并显示此错误: System.ArgumentOutOfRangeException:StartIndex不能小于零。参数名称:System.String.InternalSubStringWithChecks处的startIndex(Int32 startIndex,Int32 length,Boolean FalwayScope)处的System.String.Substring(Int32 start

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

它工作正常,但突然停止并显示此错误:

System.ArgumentOutOfRangeException:StartIndex不能小于零。参数名称:System.String.InternalSubStringWithChecks处的startIndex(Int32 startIndex,Int32 length,Boolean FalwayScope)处的System.String.Substring(Int32 startIndex)处的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;
试试看
{
字符串img_1=startHTML.Substring(startHTML.IndexOf(“img”));
img_1=img_1.子字符串(0,img_1.IndexOf(“”);

if(img_1.Contains(“Ehat)”这意味着传递给搜索的文本不再包含搜索字符串,即“img”

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

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

很明显,
startHTML.IndexOf(“img”)
并没有返回一个可以替代的值,而且:首先要搜索的是我工作的公司提供的网站:。也就是说,最好阅读你正在使用的功能(以避免“缺乏研究”投票)在这种情况下,如果这是不够的,请确保提供链接到您在文章中阅读的文章,用一行解释为什么它没有解释问题。边注:您可能不应该使用字符串操作来解析HTML,尤其是如果阅读文档对您来说是个问题。请考虑HTMLaGracyPyACK或类似的HTML。改为解析器,因为至少你不需要一个接一个地处理所有这些错误。嗨,谢谢你的回答,我已经多次遇到这个错误,我知道它的意思。我不明白为什么在本地主机上它是正常的,而在服务器上突然停止是正常的。对不起,如果我没有把问题写得更清楚。谢谢你的回答,我知道什么这意味着,字符串包含“img”,问题出在其他地方。当我在本地主机上执行代码时,它是正常的,当它在服务器上时,会出现此错误。
var pos = string img_1 = startHTML.IndexOf("img");
if (pos >= 0) {
    string img_1 = startHTML.Substring(Pos);
    ...
}