0

私たちの .NET 4 アプリケーションは外部の .NET Web サービスを使用しており、デバッグ モードではすべて正常に動作しましたが、リリース モードではシリアル化エラーが発生しました。サービスに送信された SOAP 要求を確認したところ、要素の 1 つに違いが見つかりました

デバッグ モードの SOAP 要素

        <Key>pswhistory</Key>
        <Value xsi:type="ArrayOfString">
           <string>a</string>
           <string>B</string>
        </Value>

リリース モードの SOAP 要素

        <Key>pswhistory</Key>
        <Value xmlns:q1="http://tempuri.org/" xsi:type="q1:ArrayOfString">
           <q1:string>a</q1:string>
           <q1:string>B</q1:string>
        </Value>

誰かが XMLSerializer でこの動作を説明できますか?

ありがとう

4

2 に答える 2

1

@Phil - あなたはそれを正しく理解しました。メッセージがリリース モードで生成されたときに、SOAP メッセージの名前空間が正しくありませんでした。

問題は、自動生成されたシリアライゼーション アセンブリが原因でした。プロジェクトのプロパティで「シリアル化アセンブリの生成」オプションをオフにすることで、問題は解決しました。このオプションをオンにすると、コンパイラは sgen.exe を使用して、アセンブリ内のすべての型のシリアル化アセンブリを生成します。これにより、アプリケーションの起動時間が長くなります。何らかの理由で、生成されたアセンブリが間違ったアセンブリを参照していました。詳細については、以下のインクを参照してください

http://msdn.microsoft.com/en-us/library/bk3w6240(VS.80).aspx

シリアライゼーション アセンブリ。それは必要ですか?

于 2012-06-22T20:23:07.263 に答える
0

明示的に宣言する必要がある名前空間のように聞こえます。シリアル化しようとしているコード/ビジネス オブジェクトのサンプルを添付していただけますか?

于 2012-06-21T20:22:37.033 に答える