Сервис WCF: Возврат пользовательских объектов

Я использую сервис WCF в своем приложении. Я должен возвратить пользовательский объект в классе обслуживания. Метод следующие:

IService.cs:
[OperationContract]
object GetObject();

Service.cs
public object GetObject() 
{
  object NewObject = "Test";
  return NewObject;
}

Каждый раз, когда я звоню сервису, он выдает исключение со следующим сообщением:

System.ServiceModel.CommunicationException: "An error occured while receiving the HTTP response to <service path>"

Внутреннее исключение:

System.Net.WebException: "The underlying connection was closed. An unexpected error occured on receive"

Не можем мы типы эхо-сигнала или пользовательские объекты от сервиса WCF?

8
задан John Saunders 29 December 2009 в 13:14
поделиться

3 ответа

Вы должны вернуть экземпляр класса, который отмечен атрибутом DataContract:

[DataContract]
public class MyClass
{
    [DataMember]
    public string MyString {get; set;}
}

Теперь измените интерфейс Вашего сервиса следующим образом:

[OperationContract]    
MyClass GetMyClass();  

И Ваш сервис:

public MyClass GetMyClass()      
{     
    return new MyClass{MyString = "Test"};     
} 
14
ответ дан 5 December 2019 в 11:25
поделиться

Пользовательские объекты в порядке, в то время как MS говорит, что больше не нужно использовать атрибуты [DataContract] или [datamember], без них я не преуспел. Попробуйте пометить свой пользовательский объект атрибутами и посмотреть, что происходит. Вы можете получить больше информации о том, что происходит явно, включив трассировку и используя svcutil для получения трассировки.

.
0
ответ дан 5 December 2019 в 11:25
поделиться

Вы должны возвращать определенный тип, а не "объект". Объект" может быть любого типа

.
1
ответ дан 5 December 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: