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

问题描述:

我有我的wcf服务,运行良好。 然后从我的asp.net应用程序,我试图连接到这个服务。一切都OK了,从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服务

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

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

的问题是,IQueryable的是不可序列。我已将其更改为Collection,现在可以使用。

WCFResponseGetAllProducts被返回有多大?之前由于方法返回的数据量而遇到问题。

尝试通过查找属性maxArrayLengthmaxBytesPerReadmaxDepthmaxNameTableCharCountmaxStringContentLength,提高他们调整web.config文件为您服务。

你也需要做同样在web.config文件为您的asp.net应用程序的configuration > system.serviceModel > bindings > wsHttpBinding部分属性,以及(可能的)maxBufferPoolSizemaxReceivedMessageSize值。

+0

道歉的答案稍微模糊,哪些价值,具体来说,你需要改变 - 这里很晚,我可能会有一杯葡萄酒或两杯=) – Rob 2010-11-19 22:44:15

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