为什么我的WebGet返回一个空类

本文关键字:一个 我的 WebGet 返回 为什么 | 更新日期: 2023-09-27 17:54:44

当我试图检索一个充满数据的类时,我从来没有检索到正确的数据。下面类中的布尔值总是返回false。

当我从Chrome的Postman调用相同的GetState函数而不做任何更改时,我确实得到了我期望的结果

我有一个班,看起来像这样:

        [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;
            }

我确保服务的两端都有相同的"State"类和相同的"IConnectionService"接口。

为什么返回到调用机器的类中的布尔值从未设置?当我从Chrome或Postman调用函数时,为什么我会得到正确的数据?

类似问题的答案提到了[DataContract][DataMember]属性,但我已经将它们添加到了我的类中。

PS:当我在服务的两侧将ResponseFormat设置为WebMessageFormat.Json时,我得到了预期的数据。遗憾的是,由于请求了Xml格式,因此这将不是解决方案。

为什么我的WebGet返回一个空类

BodyStyle = WebMessageBodyStyle.Bare

然后从函数返回一个System.IO.Stream。

之后,尝试在接收器处反序列化您的流。

相关文章: