2

通常の ( .cs ) クラスを Web サービス ( .asmx.cs ) クラスに変換しようとしています。私は Web サービスのプロではないので、変換するために、このクラスのすべての関数を Service1.asmx.cs Web サービス クラスにコピーし[WebMethod]、すべての関数の上に追加しました。しかし、問題は、これらの関数を手で書いているときは機能していますが、残りの関数をコピーして貼り付けて[WebMethod]その上に追加しただけで、

System.NotSupportedException: IDictionary を実装しているため、System.Collections.IDictionary 型のメンバー System.Exception.Data をシリアル化できません。

これらの関数を手で書くことはできません。そのクラスには約 50 の関数があります。しかし、この例外の原因を取得できません。クラスのコンストラクターを削除しました。すべての関数を確認しましたが、通常のクラスから実行すると正常に動作しています。それらはすべてパブリック関数です。この原因と解決策を教えてください。

4

1 に答える 1

0

サービス技術に関係なく (私は asmx から始めて WCF に移行しました) IDictionary は、特にエンドポイントが SOAP または http ベースの場合、サービス インターフェイスを介して返すことはできません。サービス インターフェイスを介して出入りするオブジェクトはシリアライズ可能である必要がありますが、IDictionary はシリアライズ可能ではありません。

于 2013-09-21T17:26:35.253 に答える