Я использую сервис 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?
Вы должны вернуть экземпляр класса, который отмечен атрибутом DataContract
:
[DataContract]
public class MyClass
{
[DataMember]
public string MyString {get; set;}
}
Теперь измените интерфейс Вашего сервиса следующим образом:
[OperationContract]
MyClass GetMyClass();
И Ваш сервис:
public MyClass GetMyClass()
{
return new MyClass{MyString = "Test"};
}
Пользовательские объекты в порядке, в то время как MS говорит, что больше не нужно использовать атрибуты [DataContract] или [datamember], без них я не преуспел. Попробуйте пометить свой пользовательский объект атрибутами и посмотреть, что происходит. Вы можете получить больше информации о том, что происходит явно, включив трассировку и используя svcutil для получения трассировки.
.Вы должны возвращать определенный тип, а не "объект". Объект" может быть любого типа
.