系统.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.
我无法在我的设备中重现错误。
对这个问题有什么想法吗?
谢谢
堆栈跟踪会很好。呼叫代码会很好。哪个GetBytes
过载?你能找出传递给GetBytes
的数据吗?
根据文档,有三个GetBytes
重载抛出一个ArgumentException
:
GetBytes(Char*, Int32, Byte*, Int32)
GetBytes(Char[], Int32, Int32, Byte[], Int32)
GetBytes(String, Int32, Int32, Byte[], Int32)
基本上,这个错误表明您没有给GetBytes
足够的空间来存储结果字节。
看看你的调用代码,你是否记得为数组分配足够的空间?