2011-06-21 8 views
2

Visual Studio 2008でプロジェクトを行い、Monodevelop 2.4.2およびモノ2.10.2のLinuxでビルドしました。モノ:WebサービスでXMLにUTF-8 BOMが追加されています

モノラルバージョンによって生成された出力SOAPは、以下の例外を生成し、サーバによって処理することができないUTF-8 BOM(EFのBBのBF)ヘッダを含むされる:どのようにすることができ

"Couldn't create SOAP message due to exception: XML reader error: com.sun.xml.stream.XMLStreamException2: ParseError at [row,col]:[1,1] 
Message: Content is not allowed in prolog." 

をモノ自動生成WebサービスクライアントにこのBOMを含まないよう指示しますか?

Wiresharkのスニフ:

000000B5 ef bb bf 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e ...<?xml version 
000000C5 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d ="1.0" e ncoding= 
000000D5 22 75 74 66 2d 38 22 3f 3e 3c 73 3a 45 6e 76 65 "utf-8"? ><s:Enve 

答えて

0

あなたは、クライアントの作成にbasicHttpBindingを使用する場合は、BOM

ClientBaseImp client = new ClientBaseImp(); 
((BasicHttpBinding)client.Endpoint.Binding).TextEncoding 
     = new UTF8Encoding(false); 

ずにエンコーディングを設定する必要があります最終ラインnew UTF8Encoding(false)は、BOMを削除します。

+0

説明を少し追加する必要があります –

+0

'as '演算子の代わりに' BasicHttpBinding'に明示的キャストを使うべきです。何か問題が起これば 'ObjectNullReference'例外が発生しますが、明示的キャスティングは' BasicHttpBinding'にキャストできないという手がかりを与えます。したがって、 '((BasicHttpBinding)client.Endpoint.Binding).TextEncoding'を使用してください。 – Artemix

関連する問題