底层连接已关闭:连接意外关闭

时间:2010-11-19 22:35:52

标签: asp.net-mvc wcf

我有我的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服务

3 个答案:

答案 0 :(得分:3)

我看到你已经解决了你的问题,但我仍然可以提供建议,看看如何使用Service Trace Viewer找出在这种情况下出了什么问题。

答案 1 :(得分:0)

返回WCFResponseGetAllProducts有多大?由于方法返回的数据量,我之前遇到过一个问题。

尝试通过查找属性web.configmaxArrayLengthmaxBytesPerReadmaxDepthmaxNameTableCharCount来调整服务的maxStringContentLength文件,增加他们。

您还需要为您的asp.net应用程序的configuration > system.serviceModel > bindings > wsHttpBinding文件的web.config部分中的属性执行相同的操作,以及(可能)maxBufferPoolSizemaxReceivedMessageSize值。

答案 2 :(得分:0)

我解决了这个问题。 在我的WCFREsponseGetAllProducts类型的响应对象中,我有以下属性

[DataMember]
public IQueryable<Product> Products {get;private set;}

问题是 IQueryable不可序列化。我把它改成了Collection,现在它可以工作了。