0

SQL Server Integration Services 2005 には、特定の状況で長さ 0 の文字列を単一の文字列に変換するバグがあるようです。その文字はたまたま ansi null です。ascii 文字ゼロ (これは sql null とは大きく異なることに注意してください)。

これは、データ ロード プロセスの 1 つで発生するため、空のはずの住所行にこれらの文字が含まれます。

このデータを Web サービス経由で公開すると、データは問題なくシリアライズされます。Web サービスの応答を IE で表示すると、標準の XSL によって null が取り除かれますが、ソースを表示すると、次のように表示されます。

Addr2="�"

しかし、.Net で生成されたプロキシからこのサービスを呼び出すと、エラーが発生します。

"There is an error in XML document"

これはおそらく、null によって文書が終了し、文書が無効になるためです。

これらがデータベースに入るのを防ぐために最善を尽くすことはできますが、これらの値が応答にあるときにプロキシ コードがエラーになるのを防ぐ方法はありますか? これらを検出して削除するために、すべての Web メソッドにコードを追加したくはありません。

4

1 に答える 1

1

私たち自身のWebサービスでも発生しましたが、同様の問題が発生しました。問題を診断するために、生成されたXmlSerializerDLLをデバッグしました。あなたは追加することによってそれを行うことができます

<system.diagnostics>
  <switches>
    <add name="XmlSerialization.Compilation" value="4"/>
  </switches>
</system.diagnostics>

詳細については、 MSDNの記事を参照してください。

Webサービス側で問題を修正することができました。

この場所で別の解決策が見つかる場合があります。

于 2009-01-29T12:55:01.517 に答える