使用WCF、JSON和非Windows客户端的换行符问题

4
我有一个使用WebMessageFormat.Json作为ResponseFormatRequestFormat的.NET WCF服务。该服务运行在Windows服务器上,客户端是Android平板电脑。
事实证明,从客户端发送到服务器的字符串包含LF换行符("\n")而不是CRLF("\r\n")。由于Android基于Linux,所以这并不奇怪。然而,数据存储在一个Windows数据库中,并且由Windows客户端读取,因此我需要CRLF换行符。 有没有更优雅的方法来解决这个问题,而不是手动地通过WCF接收每个字符串并替换 "\n" 为 "\r\n"?由于WCF具有许多选项和功能,我想可能会有一些我错过的隐藏的AutoTranslateNewlines选项...
附加信息:我的服务大致声明如下:
[OperationContract()]
[WebInvoke(ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           UriTemplate = "MyService?UserId={myUserId}")]
public Reply MyService(String myUserId, Request someRequest) { ... }

这里的Request是一个自定义的类,其中包含一些String字段,其中一些可以包含多行文本。

1个回答

0

你提到你正在使用

s = s.Replace("\n","\r\n");

但是可能会出现一个问题,即在字符串中有一些"\r\n"序列。这些将变成"\r\r\n",这将是一个问题。为了解决这个问题,只需执行以下操作即可。
s = s.Replace("\r\n", "\n");
s = s.Replace("\r", "\n");
s = s.Replace("\n", "\r\n");

这个程序可以处理所有情况,但可能不是最高效的。为了获得更好的性能,您可以使用正则表达式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接