0

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

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

如果有任何帮助,我实际上正在关注本教程: http ://www.c-sharpcorner.com/uploadfile/urmimalapal/creating-a-windows-phone-7-application-sumption-data-using-a-wcf -服务/

当我尝试调用 FindEmployee 时,我得到了那个错误。我还创建了另一种方法,它只返回一个字符串并调用它工作正常。没有错误。我已经在我的 WP7 模拟器、WCF 测试客户端和 WCFStorm 上进行了尝试,它们在List<T>尝试返回和返回字符串时都表现出相同的问题。当我的 Linq 语句到达断点时,我还确认列表正在正确填充。绝对是 WCF 拒绝发送我的List<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 回答