在本机上用vs2005开发的网站,语言用vb.net调试编译运行都没有任何问题,使用发布网站,然后把 内容拷贝到虚拟主机,数据库配置无误,“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------索引超出了数组界限。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限。代码也没有问题, 在自己本机上建一个不同于项目名的虚拟目录,把发布网站生成的内容拷贝过来,运行也是这个错误实在不知道哪里出了问题,请高手指点以下,很急地请教

解决方案 »

  1.   

    不是代码的问题,执行主页就出现问题 而我的主页只是一个判断 后跳转的页面,没有任何和数组有关的代码,具体出错提示[IndexOutOfRangeException: 索引超出了数组界限。]
       index.Page_Load(Object sender, EventArgs e) +371
       System.Web.UI.Control.OnLoad(EventArgs e) +99
       System.Web.UI.Control.LoadRecursive() +47
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061 
    在网上查了下资料,vs2005 发布网站 是有这个问题啊
      

  2.   

    http://www.chenjiliang.com/Article/View.aspx?ArticleID=2051&TypeID=73
      

  3.   

    http://blog.joycode.com/scottgu/archive/2007/04/24/101729.aspx
      

  4.   

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack() Then
                Dim strCity As String = String.Empty
                If Not Request.Cookies("City") Is Nothing Then
                    strCity = Request.Cookies("City").Value
                Else
                    strCity = IP_City.GetCityFromIP(Request.ServerVariables.Get("Remote_Addr").ToString())
                    Dim MyCookie As HttpCookie = New HttpCookie("City")
                    MyCookie.Value = strCity
                    MyCookie.Expires = DateTime.Now.AddDays(14)
                    Response.SetCookie(MyCookie)
                End If
                Response.Redirect(strCity.Split(",")(1) + "/web/0/main.aspx")
            End If
        End Sub
    主页的页面没有任何内容,就是上面这些,一个根据ip判断城市,然后跳转到对应的地址
      

  5.   

    奇怪的问题,VS的BUG????不大可能吧
      

  6.   

    肯定是这里Response.Redirect(strCity.Split(",")(1) + "/web/0/main.aspx")
    错误了
      

  7.   

    strCity = IP_City.GetCityFromIP(Request.ServerVariables.Get("Remote_Addr").ToString())
    --------------------------------------------
    问题可能出在这一句上,你把它Response.Write出来看看
    Response.Redirect(strCity.Split(",")(1) + "/web/0/main.aspx")
    --------------------------------------------
    你的代码里只有这一句用到了数组
      

  8.   

    这个应该没有问题,我已经用了错误日志,假如出了问题,日志文件会记录的,关键问题是我一直调试运行了很久,从没出现过问题, 一发布就出现问题,这才是关键啊
    很明显你服务器上没有Request.Cookies("City")  而你有没有加以判断
    你能确认没问题啊,把这句话(Response.Redirect(strCity.Split(",")(1) + "/web/0/main.aspx")
    )前面加个判断试试
      

  9.   

    strCity的值有问题吧,调试一下啊,楼主不要太自信,要相信事实
      

  10.   

    这个应该没有问题,我已经用了错误日志,假如出了问题,日志文件会记录的,关键问题是我一直调试运行了很久,从没出现过问题, 一发布就出现问题,这才是关键啊Response.Redirect(strCity.Split(",")(1) + "/web/0/main.aspx")========
    1。
    大哥, 你的 strCity 是运行时相关的, 而且是从 cookies 中获取的, 你确保你发布之后 cookies 值跟你之前的一摸一样迈?2。
    strCity.Split(",")(1)
    ========
    这种代码是最糟糕的,你以为,这样很简洁迈?你确定 strCity 一定至少包含一个的 ,  (逗号), 否则,必然 IndexOutofRange, 最要命的是你没有检查3。
    不说了, 自个调试去4。
    下次,提问题,想想想盖怎么提问,能够让大家以最快速度给你有用的建议,不要只来个错误信息,像这种问题关键是堆栈跟踪信息啊, 我想,假如你自习查看,一定可以看到堆栈信息指向的抛出异常的那一行代码5。
    多宝贵的 200 fen 啊
      

  11.   

    strCity.Split(",")(1)你不做判断,怎么能确定split后一定是分成两个字符串呢?还有,vb.net和vb不同,索引是从0开始的
      

  12.   

    通报一下,找到问题了,strCity.Split(",")(1)这个地方的问题,cookie里面的值里有中文,
    获取值之后成乱码了,连逗号也没了,但是调试运行从来都是很正确的
    发布网站 ,获取cookie的值就成乱码了,无论是在本机还是虚拟主机上都是这样
    看来发布网站和调试运行总还是有些不同啊最后用server.encode 编码,取值的时候解码,问题解决
      

  13.   

    ...
    同样的问题!我更惨,我没有源代码!   [email protected]
      

  14.   

     public static void FhuafenA(int i) 
            {
                string[][] str2 = new string[i][];            int s1=0;
                for (int i1 = 0; i1 < WenjianRead.f.Length;i1++ )
                {                string s4 = WenjianRead.f[i1].ToString();
                    int m = Convert.ToInt32(s4);
                    str2[i1] = new string[m];
                    for (int i2 = 0; i2 < WenjianRead.f[i1];i2++ )
                    {                    str2[i1][i2]=WenjianRead.a[s1];
                        s1++;                
                    }
                    
                
                }
            
            
            }
    当程序运行时,str2[i1][i2]=WenjianRead.a[s1];提示出错:索引超出了数组界限。  请哪位大虾帮帮忙,代码那里有问题?小生才疏学浅急求解~~~~!!!