我的服务端项目也出现这个问题,至今也没找到什么时候出现的,过一段时间就蹦出来这个状况, 我都查不出问题在什么地方。
我现在猜,可能是网络问题。
当网络不好时,从浏览器提交的信息,没有提交完整,断断续续的,只提交了一半,服务器只处理部分信息,还有一些没有处理到,就报错了。
有关于 Encoding.RegisterProvider 方法,我查阅了有关帮助,主要是在字符处理上用到。我的代码中,有一个地方在处理身份证号字符地方,原理是这个样的,大家帮看一下错误在哪里,是不是有导致出现这个错误的原因。
Dim drr As DataRow = DataTables("frxuesheng").AddNew() ‘新增一行
If nms2.Contains(nm) Then ’如果身份证号信息已被提交
Dim z As String
z = e.Values(nm)
z = z.trim(vblf,vbcr,vbcrlf,Chr(9),Chr(32)) ‘处理身份证号信息,去掉前后的回车换行符,半角空格符,全角空格符,Tab符,’符,等等。
z = z.Replace(" ","").Replace(Chr(9),"").Replace("'","").Replace("G","").Replace("L","") '去掉空格等字符
If z.Contains("x") '如果有小写的x,转换为大写X
z = z.Replace("x","X")
End If
drr(nm) = z ‘将身份证号保存下来。
还有一种情况,是不是当身份证号的X,写成×,就出错。就这是一个在word中用插入字符时,所选的拉丁语-1的乘号。