Основное соединение было закрыто: соединение было неожиданно закрыто - PullRequest
2 голосов
/ 20 ноября 2010

У меня есть служба 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

Ответы [ 3 ]

3 голосов
/ 20 ноября 2010

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

0 голосов
/ 20 ноября 2010

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

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

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

0 голосов
/ 20 ноября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...