C# System.ArgumentException:值不在预期范围内

C# System.ArgumentException:值不在预期范围内,c#,compact-framework,pocketpc,C#,Compact Framework,Pocketpc,我正在研究compactframework c#vs 2005。 我的PDA设备是Pocket pC 2003设备 我安装了我的应用程序,并在我的PDA设备上成功运行。当我将项目发布给客户机时,当他部署并开始运行应用程序时,他收到了一个错误 “System.ArgumentException:值不在预期范围内。 在System.Text.AscienceODing.GetBytes()中 堆栈跟踪在这里 Exception: System.ArgumentException: Value doe

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

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

“System.ArgumentException:值不在预期范围内。 在System.Text.AscienceODing.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()
公共静态int EncodeVariableString(字符串str,字节[]rawData, int encodePos){int curPos=encodePos; int len=str.Length.ToString().Length;curPos=EncodePositiveInt32(len,rawData,curPos,1)

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

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

对这个问题有什么想法吗


谢谢

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

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

基本上,错误表明您没有给
GetBytes
足够的空间来存储生成的字节


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

你在哪里调用该函数?他可以输入非ASCII字符,而你不能?你的代码使用的是哪种重载?同一代码在我的PDA中成功运行。它没有在客户端PDA上运行。他还为日志输入了相同的值客户端PDA是针对英语还是其他语言进行本地化的?另外,显示您的代码-您可能正在执行某些操作,假设原始字符串中每个字符有2个字节。
                  curPos = EncodePositiveInt32(str.Length, rawData, curPos, len);

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