2011-01-18 1 views
0

Я нашел этот вопрос: Complex data types in WCF?, который имеет очень похожую проблему, за исключением того, что он основан на проблемах enumvalue. Моя проблема немного сложнее. У меня есть служба с методами, которые отлично работают, кроме одного. Вызов одного метода (operationcontract), который терпит неудачу, - это метод, возвращающий сложный объект. Этот объект имеет свойство с полями [Include] и [Association], которое, в свою очередь, имеет свои собственные поля [Include] и [Association] (они фактически рекурсивные, указывающие друг на друга, строят потенциально бесконечный список.)Более сложные типы данных в WCF, атрибут ассоциации, включить атрибут и т. Д.

Самая большая проблема заключается в том, что в моей среде разработки Win 7 x64, vs2010, iis, она функционирует должным образом, но в моей производственной среде Server 2008 R2 она прерывается, предоставляя мне ошибку «Ошибка при получении ответа HTTP на ошибку» .

Я проверил Службу просмотра трассировки в журнале сообщений, но все, что является apparant, заключается в том, что никакой отсылки не отправляются вообще для этого конкретного запроса. Все остальные запросы получают запись «ServiceLevelSendReply», тогда как эта конкретная способ нет.

Любые идеи?

ответ

1

Поскольку у вас есть объекты, ссылающиеся на другие объекты в возможной круговой форме, вы в основном пытаетесь отправить граф объектов, а не дерево объектов. WCF добавила поддержку для отправки графов объектов в .NET 3.5 SP1, поэтому, если ваш сервер имеет .NET 3.5 без SP1 или ниже, он будет терпеть неудачу при попытке отправить граф объекта.

Чтобы точно узнать, почему ваш сервис не отвечает, вы можете указать enable WCF tracing, который производит очень подробный журнал того, что происходит внутри вашего сервиса.

+0

Оба сервера и dev машины ASP.NET 4.0 с WCF правильно установлены и работают. Я забыл упомянуть об этом. Кроме того, я пробовал отслеживание, вот где я узнал, что все входящие запросы на обслуживание имеют «ServiceLevelSendReply», за исключением того, у кого есть проблема. Нет другой информации об этом конкретном запросе. Я посмотрю, смогу ли я включить более глубокое отслеживание, но не уверен, что все доступные варианты. – PatTech

+0

@DNeoMatrix: Самый высокий уровень отслеживания - 'switchValue =" Все ". –

+0

Даю вам кредит, хотя это не было прямой причиной моего нахождения решения. Очевидно, System.ServiceModel.DomainServices.Server по умолчанию не существует на серверах asp.net, но он указан в моей библиотеке типов данных и должен быть скопирован на сервер во время публикации. – PatTech