WCF、JSON 和非 Windows 客户端的换行符

本文关键字:客户端 换行符 Windows 和非 JSON WCF | 更新日期: 2023-09-27 18:31:26

我有一个使用WebMessageFormat.Json作为其ResponseFormatRequestFormat的.NET WCF服务。该服务在Windows服务器上运行,客户端是Android平板电脑。

事实证明,从客户端发送到服务器的字符串包含LF换行符 ("'") 而不是CRLF ("''r'")。由于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) { ... }

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

WCF、JSON 和非 Windows 客户端的换行符

你提到你正在使用

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");

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