Когда я пытаюсь получить класс, заполненный данными, я никогда не получаю нужные данные. Логические значения в классе ниже всегда возвращают значение false.Почему мой WebGet возвращает пустой класс
Когда я называю те же GetState
функцию от Почтальона не из Chrome без внесения каких-либо изменений, я получаю результаты, которые я бы ожидать
У меня есть класс, как Wich выглядит примерно так:
[DataContract]
public class State
{
[DataMember]
public bool Camera_1_Ok { get; set; }
[DataMember]
public bool Camera_2_Ok { get; set; }
[DataMember]
public bool Camera_3_Ok { get; set; }
}
Мой ServiceContract Интерфейс выглядит следующим образом:
[ServiceContract]
interface IConnectionService
{
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetState", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
State GetState();
}
реализация GetState выглядит следующим образом:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public sealed class WCFServer : IConnectionService
{
public State GetState()
{
State tempState = new State();
State.Camera_1_OK = true;
State.Camera_2_OK = true;
State.Camera_3_OK = true;
return tempState;
}
Я удостоверился, что обе стороны службы имеют одинаковый класс «состояние» и тот же интерфейс «IConnectionService».
Почему логические числа в классе, которые возвращаются вызывающей машине, никогда не установлены? И почему я получаю нужные данные, когда я вызываю функцию из Chrome или Postman?
Awnsers к аналогичным вопросам упоминается [DataContract]
и [DataMember]
атрибутов, но я уже добавил их в свой класс.
PS: Когда я устанавливаю ResponseFormat
в WebMessageFormat.Json
по обе стороны службы, я получаю данные, как ожидалось. К сожалению, это не будет решением, так как был запрошен формат Xml
.
Осмотрите запрос с помощью Fiddler и узнайте, как они отличаются друг от друга, когда запрос выполняется в обоих сценариях. Также попробуйте не устанавливать форму ответа, и пусть среда обрабатывает ее. Он решает форму ответа из заголовка ответа «Принять» и возвращает в формате соответствующим образом. – Rajesh
Я не мог найти никаких различий с fiddler, кроме как Content-Type, который выполняется, если он находится в формате Json или XML. так что не повезло. – Rik
Можете ли вы опубликовать информацию о том, как выглядит ваш конфиг? – Rajesh