正如问题所述。我无法通过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>
答案 0 :(得分:0)
我没有打算下载与本教程相关的任何示例代码,但我注意到教程中没有定义MyEmployee
实体。您应该确保它标有[Serializable]
属性,如下所示:
[Serializable]
public class MyEmployee
{
public int Property1 { get; set; } // etc
}
还有可能你必须向串行器声明KnownTypes,这取决于你正在做什么 - 你应该发布这段代码,然后打开WCF logging以获得更好的错误信息