sm = System.Web.HttpContext.Current.Request.InputStream;
                //判断是否有数据流传入
                if (sm.Length == 0)
                {
                    strbool = false;                  
                }            
                else
                {
                    int len = (int)sm.Length;//获取数据流的长度
                    byte[] inputByts = new byte[len];
                    sm.Read(inputByts, 0, len);//读取所有数据                    sm.Close();
 JsonDatas = System.Text.Encoding.UTF8.GetString(inputByts);
当红色部分的Read()方法,中间参数为0时
JsonDatas="sessionkey=X_B_N_F"
当红色部分的Read()方法,中间参数为1或者比1大时sm.Read(inputByts, 1, len);//读取所有数据
显示如下错误:
{"目标数组的长度不够。请检查 destIndex 和长度以及数组的下限。"}
请问这是什么原因啊,Read()中各个参数代表什么意思,中间参数是代表从什么位置开始读取吗
如果我要读取JsonDatas=“N_F”怎么改

解决方案 »

  1.   

    参数说明buffer
    字节数组。此方法返回时,该缓冲区包含指定的字符数组,该数组的 offset 和 (offset + count -1) 之间的值由从当前源中读取的字节替换。 offset
    buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。 count
    要从当前流中最多读取的字节数。 
    你的数组有100个长度,而你如果从1开始读,读取100个,就需要你的数组有101个容量,而你只有100个,所以报错
      

  2.   


    哦明白了
    问下当我把0改为5  sm.Read(inputByts, 5, len-5);
    获取值如下
    JsonDatas="\0\0\0\0\0sessionkey=X_"
    怎么让它显示JsonDatas="X_"
      

  3.   

    不知道這個是不是你想要的:        string JsonDatas = "\0\0\0\0\0sessionkey=X_";
            if (JsonDatas.Length > 2)
            {
                string s = JsonDatas.Substring(JsonDatas.Length - 2,2);
            }
      

  4.   


    嗯 我已经这样写了,还是谢谢你
    上面的sm.Read(inputByts, 5, len-5);
    与sm.Read(inputByts, 0, len-5);
    显示的值为什么一样的,您知道为什么吗