1

私たちは他の会社と協力しています。私たちのアプリケーションは、私たちの側のWCFと、反対側のカスタム実装されたjavawsdlハンドラーを介して他のアプリケーションと通信します。これらはwsdl形式を指定し、ルールの1つは、特定の文字列に15文字を超える文字を含めることはできないというものです。(通常は60ですが、簡単な例として15を使用します)

次の文字列を送信しようとすると、wsdlによると文字列が長すぎるというエラーが発生します。

"example & test" >これは14文字の文字列なので、許可する必要があります

microsoftwcfパーサーはこれをに変換し"example & test"ます。このエンコードされた文字列の長さは18文字です。

メッセージで定義された最大長をチェックするための標準的な動作は何ですか?エンコードされたメッセージですか、それともデコードされたメッセージですか。デコードされたメッセージだと思いますが、よくわかりません。エンコードされたメッセージの場合、文字列をどのように分割する必要があるかを知るために、これをどのように処理する必要がありますか?

4

1 に答える 1

0

http://www.w3.org/TR/xmlschema-2/#rf-maxLength 4.3.3 maxLength

文字列および文字列から派生したデータ型の場合、maxLengthは、[XML 1.0(Second Edition)]で定義されている文字単位で測定されます。

文字セット[定義:解析されたエンティティには、テキスト、文字のシーケンスが含まれ、マークアップまたは文字データを表す場合があります。]

標準的な動作は、マークアップされた文字としてデコードされたものであると私が思うことを読むと、単一の文字として扱われる必要があります。

したがって、通常は、エンコードする前に分割/切り捨てを行います。そうしないと、エンコードされた文字の途中で切り捨てると問題が発生します。これをBizTalkを背後に持つWCFWebサービスに対してテストしましたが、maxLengthより長いXMLエンコード文字列で問題ありません。

デコードする前にやっているようですが。したがって、最初にエンコードしてから、空白で分割する必要がある場合があります。

于 2010-04-15T02:14:05.570 に答える