4

我有一个 .NET WCF 服务WebMessageFormat.Json,它同时用作它的ResponseFormat和它的 .NET WCF 服务RequestFormat。该服务在 Windows 服务器上运行,客户端是 Android 平板电脑。

事实证明,从客户端发送到服务器的字符串包含LF换行符 ("\n") 而不是CRLF("\r\n")。由于 Android 是基于 Linux 的,这并不奇怪。但是,数据存储在 Windows 数据库中并由 Windows 客户端读取,因此我需要CRLF换行符。

有没有比手动s = s.Replace("\n", "\r\n");通过 WCF 接收的每个字符串更优雅的方法来解决这个问题?由于 WCF 有这么多的选项和功能,我想可能有一些AutoTranslateNewlines我错过的隐藏选项......


附加信息:我的服务声明大致如下:

[OperationContract()]
[WebInvoke(ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           UriTemplate = "MyService?UserId={myUserId}")]
public Reply MyService(String myUserId, Request someRequest) { ... }

whereRequest是一个带有几个String字段的自定义类,其中一些可以包含多行文本。

4

1 回答 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");

它应该可以处理所有情况,尽管可能不是最好的。为了获得更好的性能,也许您可​​以使用正则表达式。

于 2015-07-08T02:10:57.443 回答