4

そのと そのWebMessageFormat.Jsonの両方として使用する .NET WCF サービスがあります。サービスは Windows サーバーで実行され、クライアントは Android タブレットです。ResponseFormatRequestFormat

結局のところ、クライアントからサーバーに送信される文字列には、 ("\r\n" LF) ではなく改行 ("\n")が含まれています。CRLFAndroid は 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) { ... }

whereはいくつかのフィールドRequestを持つカスタム クラスであり、その一部には複数行のテキストを含めることができます。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 に答える