我有我的wcf服务,运行正常。 然后从我的asp.net应用程序,我正在尝试连接到此服务。一切都还可以,asp.net的请求是在服务中接收的(因为我可以调试代码)然后当它返回到客户端时我有以下错误:
The underlying connection was closed: The connection was closed unexpectedly
我在WCF服务上的合约如下:
[OperationContract()]
WCFResponseGetAllProducts GetAllProducts(WCFRequestGetAllProducts request);
和WCFResponseGetAllProducts一样,WCFRequestGetAllProducts类具有[DataContract]属性。这些类的成员具有[DataMember]属性。
但是当我在合同中添加另一种方法时:
[OperationContract()]
int Test();
然后我可以从asp.net mvc应用程序执行它没有问题。有人可以帮帮我吗? PS。我目前在Visual Studio 2010中的默认Web服务器中托管我的wcf服务
答案 0 :(得分:3)
我看到你已经解决了你的问题,但我仍然可以提供建议,看看如何使用Service Trace Viewer找出在这种情况下出了什么问题。
答案 1 :(得分:0)
返回WCFResponseGetAllProducts
有多大?由于方法返回的数据量,我之前遇到过一个问题。
尝试通过查找属性web.config
,maxArrayLength
,maxBytesPerRead
,maxDepth
和maxNameTableCharCount
来调整服务的maxStringContentLength
文件,增加他们。
您还需要为您的asp.net应用程序的configuration > system.serviceModel > bindings > wsHttpBinding
文件的web.config
部分中的属性执行相同的操作,以及(可能)maxBufferPoolSize
和maxReceivedMessageSize
值。
答案 2 :(得分:0)
我解决了这个问题。 在我的WCFREsponseGetAllProducts类型的响应对象中,我有以下属性
[DataMember]
public IQueryable<Product> Products {get;private set;}
问题是 IQueryable不可序列化。我把它改成了Collection,现在它可以工作了。