通过WCF发送List <t>时出现SocketException </t>

时间:2012-08-20 13:07:55

标签: wcf windows-phone-7 list generics

正如问题所述。我无法通过WCF发送List<T>。我无法理解为什么,过去一周我一直在网上搜索高低,没有任何具体的答案。我一直收到SocketException:远程主机强行关闭现有连接。但是,如果我调用的方法只返回一个字符串,那么它可以正常工作。

我正在IIS Express 7.5上托管我的WCF。我可以通过我的机器的IP确认我可以通过我的浏览器或本地网络上的其他设备访问我的服务。

如果有任何帮助,我实际上是按照本教程: http://www.c-sharpcorner.com/uploadfile/urmimalapal/creating-a-windows-phone-7-application-consuming-data-using-a-wcf-service/

当我尝试调用FindEmployee时,我收到了该错误。我还创建了另一个方法,它只返回一个字符串并调用它工作正常。没有错误。我已经在我的WP7模拟器,WCF测试客户端和WCFStorm上尝试了它们,它们都表现出同样的问题,List<T>试图返回并返回字符串而没有任何问题。我还确认当我的Linq语句遇到断点时,列表正在正确填充。绝对是WCF拒绝发送我的List<T>

编辑: 当我尝试调用抛出List<T>的方法时,这是我从WCFStorm获得的XML回复。

<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>

1 个答案:

答案 0 :(得分:0)

我没有打算下载与本教程相关的任何示例代码,但我注意到教程中没有定义MyEmployee实体。您应该确保它标有[Serializable]属性,如下所示:

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

还有可能你必须向串行器声明KnownTypes,这取决于你正在做什么 - 你应该发布这段代码,然后打开WCF logging以获得更好的错误信息