2010-11-19 5 views
2

У меня есть служба 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. Я размещаю свою службу wcf на веб-сервере по умолчанию в visual studio 2010 на данный момент

ответ

0

Я решил проблему. В моем объекте отклика WCFREsponseGetAllProducts типа я имел следующее свойство

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

Проблема заключалась в том, что IQueryable не сериализуемый. Я изменил его в Collection, и теперь он работает.

0

Насколько велик возвращаемый WCFResponseGetAllProducts? Ранее я столкнулся с проблемой из-за количества данных, возвращаемых методом.

Попробуйте изменить файл web.config для вашей службы, ища признаки maxArrayLength, maxBytesPerRead, maxDepth, maxNameTableCharCount и maxStringContentLength и увеличивая их.

Вы также должны сделать то же самое для атрибутов в configuration > system.serviceModel > bindings > wsHttpBinding разделе web.config файла для приложения ASP.NET, а также (возможно) значения maxBufferPoolSize и maxReceivedMessageSize.

+0

Извинения за то, что ответ немного расплывчатый относительно того, какие значения, в частности, вам нужно изменить - здесь поздно, и у меня может быть бокал вина или два =) – Rob

3

Я вижу, что вы решили проблему, но я могу предложить совет, чтобы взглянуть на использование Service Trace Viewer, чтобы выяснить, что происходит не так в подобных ситуациях.

Смежные вопросы