1

SilverlightでWCFサービスを利用しようとしています...

私が行ったことは、データコントラクト用に2つの別々のアセンブリを作成することです...

  1. .Net3.5に対してビルドされたデータコントラクトでマークされたすべてのタイプを含むアセンブリ

  2. 1番目のアセンブリのファイルにリンクするSilverlightアセンブリ。

これは、.Netアプリがアセンブリ1とSilverlightアプリアセンブリ2を参照できることを意味します。これは正常に機能し、サービス全体で通信できます。

継承されたクラスを転送しようとすると、問題が発生します。私は次のクラス構造を持っています...

IFlight-すべてのタイプのフライトのインターフェース。

BaseFlight:IFlight-ベースフライトフライトはIFlightを実装します

AdhocFlight:BaseFlight、IFlight-アドホックフライトはbaseflightを継承し、IFlightも実装します。

サービス全体でベースフライトを正常に転送できます。ただし、多くの種類のフライトを転送できる1つの運用契約が必要なため、インターフェイスを介してIFlightのオブジェクトを転送できる必要があります...

public IFlight GetFlightBooking()
{
    AdhocFlight af = new AdhocFlight();
    return af;
}

...うまくいくべきだと思いますか?

ただし、エラーが発生します。

「サーバーは意味のある応答を提供しませんでした。これは、契約の不一致、セッションの早期シャットダウン、または内部サーバーエラーが原因である可能性があります。」

任意のアイデアをいただければ幸いです。

4

3 に答える 3

4

あなたはそれがうまくいくと言いBaseFlightます。あなたの基本クラスは既知のタイプに名前を付けていますか?

[DataContract]
[KnownType(typeof(AdhocFlight))]
class BaseFlight : IFlight {...}

もご覧ください[ServiceKnownType]一般に、WCFは、 (IFlight逆)シリアル化するデータから何を期待するかを正確に知りたいので、インターフェイスベースのアプローチ()を好まないでしょう。BaseFlight上記とAPIでの使用で問題なく動作することを期待しています。

于 2010-01-24T11:18:49.897 に答える
1

あなたがやりたいことは「通常の」.NETWCFで可能だと思います。WCFサービスでのインターフェイスの受け渡しについて説明する質問は次のとおり
です。WCFサービスでのインターフェイスの受け渡し?

しかし、これがSilverlightで機能するかどうかは真剣に疑っています。SLでのWCFのサポートは、控えめに言っても大雑把です。私はそれを試していません。私は間違っているかもしれません。

于 2010-01-24T11:14:43.740 に答える
0

これは、ここに記録されているように、WCFでジェネリックインターフェイスタイプをシリアル化する際のバグに関連している場合と関連していない場合があります。

http://connect.microsoft.com/VisualStudio/feedback/details/391260/executionengineexception-thrown-from-datacontractserializer-with-ilist-t

これが問題に関連している場合は、.net4.0で修正されていると聞いて喜ぶでしょう。

于 2010-04-21T11:28:39.803 に答える