C#中WebService里的回车符”\r”丢失问题

假若有定义如下的WebService(Service)方法

 

 

图片 1图片 2Code
        /// <summary>
        /// 总括长度
        /// </summary>
        /// <param name=”text”></param>
        /// <returns></returns>
        [WebMethod]
        public int GetLen(string text)
        {
            return text.Length;
        }

 

假诺传送的字符串text中包含有”回车换行”字符,也就是”\r\n”,那么在C#中经WebService(Service)传送后.在服务端接收到的数额中”\r”将会丢掉掉!!也就是理所当然”\r\n”中有多少个字节位的却只有”\n”一个字节位.

 

今日境遇这些BUG真郁闷(发送前的长度与吸纳到的尺寸不一样,导致最后的签约不相符,最终不得不将数据Base64才解决问题)…

 

8月16日19点后注:
根据武眉博<活靶子.Net>给的链接.知道爆发字符丢失的案由是因为XML规范所定.在此多谢:)

http://xml.coverpages.org/xml10-chinese.html\#sec-line-ends

图片 3图片 4Code
2.11 行尾处理
为编制的便宜起见,存储XML已析实体的微处理器文件平日用行来协会。平日这个行用回车符(#xD)和换行符(#xA)的部分结合来分隔。

为了使利用的办事简单化,对于一个表面已析实体或内部已析实体的常量实体值中富含的其他两字符常量系列”#xD#xA”或独立的常量#xD,XML处理器都应换成#xA传递给使用。(这可以经过在举办语法分析前将兼具行分隔符规范成#xA而便宜地促成。) 

相关文章