0

質問が述べているように。List<T>WCFで送信できません。その理由が理解できず、この 1 週間、具体的な答えが得られないまま、インターネット上で高低を検索してきました。SocketException が発生し続けます: 既存の接続がリモート ホストによって強制的に閉じられました。ただし、文字列のみを返すメソッドを呼び出すと、問題なく動作します。

IIS Express 7.5 で WCF をホストしています。マシンの IP を介してローカル ネットワーク上のブラウザまたは他のデバイスからサービスにアクセスできることを確認できます。

それが助けになる場合、私は実際にこのチュートリアルに従っています : -サービス/

FindEmployee を呼び出そうとすると、そのエラーが発生します。また、単純に文字列を返す別のメソッドを作成し、それを呼び出すと正常に動作します。エラーなし。WP7エミュレーター、WCFテストクライアント、およびWCFStormで試してみましたが、List<T>返されようとしても文字列が返されても問題なく同じ問題が発生します。また、Linq ステートメントがブレークポイントに達したときに、リストが適切に作成されていることも確認しました。それは間違いなく私の送信を拒否するWCFList<T>です。

編集:これは、List<T>.

<FindVendor>
  <MethodParameters>
    <SocketException>
      <ErrorCode>10054</ErrorCode>
      <Message>An existing connection was forcibly closed by the remote host</Message>
      <SocketErrorCode>ConnectionReset</SocketErrorCode>
      <NativeErrorCode>10054</NativeErrorCode>
      <Data>
        <KeysAndValues attr0="KeyValuePairArray" isNull="false" />
      </Data>
      <InnerException isNull="true" />
      <TargetSite>Int32 Read(Byte[], Int32, Int32)</TargetSite>
      <StackTrace>at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)</StackTrace>
      <HelpLink isNull="true" />
      <Source>System</Source>
    </SocketException>
  </MethodParameters>
</FindVendor>
4

1 に答える 1

0

チュートリアルに関連するサンプルコードをダウンロードする必要はありませんが、チュートリアルでMyEmployeeエンティティが定義されていないことに気付きました。[Serializable]次のような属性でマークされていることを確認する必要があります。

[Serializable]
public class MyEmployee
{
    public int Property1 { get; set; } // etc
} 

実行している内容によっては、KnownTypesをシリアライザーに宣言する必要がある可能性もあります。コードの一部を投稿し、WCFロギングをオンにしてエラーメッセージを改善する必要があります。

于 2012-08-20T13:25:24.590 に答える