WCF、JSON 和非 Windows 客户端的换行符
本文关键字:客户端 换行符 Windows 和非 JSON WCF | 更新日期: 2023-09-27 18:31:26
我有一个使用WebMessageFormat.Json
作为其ResponseFormat
和RequestFormat
的.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
字段的自定义类,其中一些字段可以包含多行文本。
你提到你正在使用
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");
它应该处理所有情况,尽管可能不是性能最高的。 为了获得更好的性能,也许您可以使用正则表达式。