トップページ | 全エントリー一覧 | RSS購読

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
トラックバック
トラックバック送信先 :
コメント

WebMethod中の改行コード(CRLFがLFになっちゃう)

ファイルの中身を返すWebサービス(ASP.NETのXML SOAP)を作っていて、改行コードを含む文字列を返すときに、返ってきた文字列の改行コードが、本当はCR+LFだったのがLFのみになる現象がありました。



これを、SoapHttpClientProtocolを継承したプロキシクラス(自動生成されるクラス)で呼び出すと、


text変数の中身が、"Hage\r\nHoge\r\n"ではなく、"Hage\nHoge\n"になってしまう。

ぐぐったら、同じような問題に悩む人がいたようなので、↓のような情報まではすぐ見つかったんだけど、
肝心の、「じゃ、どう書けばいいの?」が見つからなくて、いろいろ探し回りました。

Webメソッドのstring型の戻り値に含まれる改行コードが変換されてしまう


SoapHttpClientProtocol.GetReaderForMessageをオーバーライドすればいい、という情報を得て、
.NET Reflectorで中身を確認したところ、XmlTextReaderのインスタンスをアップキャストして返してるのがわかったので、XmlTextReader.Normalizationをfalseにすることで解決。
コードにしたらこういう感じ。
自動生成のコードには手を入れたくないので、パーシャルクラス様様です。





XMLの標準規格が影響してるようですね。詳細は長いし、理解が不正確なので書きませんが。
スポンサーサイト
トラックバック
トラックバック送信先 :
コメント

プロフィール

とむころり

Author:とむころり
24時間システムエンジニア。研究開発など何でも屋を担当。知的でおもてなし精神に満ちたシステム(サービス)が作りたい。
@tomcat_ch

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。