系统.ArgumentException:值不在预期范围内

本文关键字:范围内 ArgumentException 系统 | 更新日期: 2023-09-27 18:11:31

我正在开发compactframework c# vs 2005。我的PDA设备是Pocket pC 2003设备。

我安装了我的应用程序并在我的PDA设备上成功运行。当我将项目发布给客户端,当他部署并开始运行应用程序时,他得到一个错误

"系统。ArgumentException:值不在预期范围内。在System.Text.ASCIIEncoding.GetBytes()"。

堆栈跟踪在这里

Exception: System.ArgumentException: Value does not fall within the expected range.
at System.Text.ASCIIEncoding.GetBytes()
at  BinaryEncoder.EncodeVariableString()
at DataHolder.encodeValue()
at  UpdateInformation.encode()
at DataHolder.encodeValue()
at LogonRequest.encode()
at MessageFactory.getRequestMsg()
at MessageFactory.getRequestMsg()
at LogonManager.logon()
at doLogon()
at frmLogin.btnNext_Click()

public static int EncodeVariableString(string str, byte[] rawData,int encodePos) {int curPos = encodePos;int len = str.Length.ToString().Length;curPos = EncodePositiveInt32(len, rawData, curPos, 1);

                  curPos = EncodePositiveInt32(str.Length, rawData, curPos, len);
        return Encoding.ASCII.GetBytes(str, 0, str.Length, rawData, curPos) + curPos;         }

客户端也输入相同的用户名和密码,但他得到错误,我没有得到错误。它应该在两个pda中抛出错误。我已经硬编码了客户端给出的值。它是在我的PDA工作,但它不是在客户端PDA工作。我看到的一个不同是,在我的PDA Byte[] rawdata.length=105在客户端PDA中是rawdata.length=96.

我无法在我的设备中重现错误。

对这个问题有什么想法吗?

谢谢

系统.ArgumentException:值不在预期范围内

堆栈跟踪会很好。呼叫代码会很好。哪个GetBytes过载?你能找出传递给GetBytes的数据吗?

根据文档,有三个GetBytes重载抛出一个ArgumentException:

GetBytes(Char*, Int32, Byte*, Int32)

GetBytes(Char[], Int32, Int32, Byte[], Int32)

GetBytes(String, Int32, Int32, Byte[], Int32)

基本上,这个错误表明您没有给GetBytes足够的空间来存储结果字节。

看看你的调用代码,你是否记得为数组分配足够的空间?