.NET Webservice =代理对无效

时间:2009-12-10 23:37:45

标签: .net web-services asmx

调用Web服务时出现以下抛出错误。谷歌搜索没有任何结果,然后人们问同样的问题。

Server was unable to process request. ---> The surrogate pair (0xD860, 0x27) is invalid. A high surrogate character (0xD800 - 0xDBFF) must always be paired with a low surrogate character (0xDC00 - 0xDFFF)."} 
System.Exception {System.Web.Services.Protocols.SoapException

Web服务通过运行视图并打开数据集并读入数据并将其作为格式化XML返回,从视图中返回一系列简单文本字段。

修改

能够使用以下正则表达式解决此问题,该正则表达式删除了碰巧是MSWord / Excel字符的错误字符

string re = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";
return Regex.Replace(text, re, string.Empty);

1 个答案:

答案 0 :(得分:2)

可能发生的是:

  • XML文件包含字节ED A1 A0 27.根据chardet的说法,这很可能是在IBM866中进行эба'编码。
  • 但它缺少encoding声明,因此解析器假定它是UTF-8。
  • 文本被解码为UTF-16字符串D860 0027。
  • 由于未配对的代理D860,此字符串无效UTF-16,因此您将获得例外。