c# - WCF REST 服务 - 无法返回对象列表

标签 c# .net wcf rest

我创建了一个公开 REST 服务的 WCF Web 服务应用程序。我希望此服务返回带有数据和状态部分的通用响应(请参阅下面的 HttpResponse 类)。 HttpResponse 有一个数据成员,它是一个对象列表。根据执行的 REST 服务调用,我将使用不同类型的对象列表填充数据。

我遇到的问题是,如果数据成员是对象列表,Web 服务就会崩溃。如果它成为一个特定的类,我会得到一个有效的回应。

我该如何解决这个问题?

谢谢!

  public class HttpStatus
    {
        public int StatusCode = (int)StatusCodeEnum.SUCCESS;
        public string UserMessage = "";
        public string InternalMessage = "";
        public string LinkedList = "";

    }

    public class HttpResponse
    {
        private List<object> _data { set; get; }
        private HttpStatus _status { set; get; }

        public HttpResponse()
        {
            _data = null;
            _status = new HttpStatus();
        }

        public List<object> Data
        {
            get
            {
                return _data;
            }
            set
            {
                if (value != null) _data = value;
            }
        }

        public HttpStatus Status
        {
            get
            {
                return _status;
            }
            set
            {
                if (value != null) _status = value;
            }
        }
    }

        [WebInvoke(
            Method = "GET",
            UriTemplate = "MyEntity",
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Bare)]
        [OperationContract]
        HttpResponse GetAllEntities();



        public HttpResponse GetAllEntities()
        {
            // Create Response
            HttpResponse response = new HttpResponse();

            try{
                // Set the data
                response.Data = GetMyEntities();
                response.Status = 1;
            }
            catch(Exception ex)
            {
                Debug.WriteLine("Exception: "+ex.Message);
                response.Status.StatusCode = (int)StatusCodeEnum.FAIL;
                response.Status.InternalMessage = ex.Message;
                response.Status.UserMessage = Constants.GENERIC_USER_ERROR;
            }
            return response;
        }

最佳答案

你可以使用

public class HttpResponse<T> where T : class
{
    private List<T> _data { set; get; }
    private HttpStatus _status { set; get; }

    public HttpResponse()
    {
        _data = null;
        _status = new HttpStatus();
    }

    public List<T> Data
    {
        get
        {
            return _data;
        }
        set
        {
            if (value != null) _data = value;
        }
    }

    public HttpStatus Status
    {
        get
        {
            return _status;
        }
        set
        {
            if (value != null) _status = value;
        }
    }
}

关于c# - WCF REST 服务 - 无法返回对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871496/

相关文章:

c# - 如何在 C# 中不使用 sort 方法对数组进行排序

c# - 使用多列进行分组,然后使用方法语法对特定列求和

c# - 为什么 VS2015RC 说 "The ViewBag doesn' t 存在于当前上下文中”,而 VS2013 说没有错误?

.net - 如何将同一程序集的多个版本添加到 gac

c# - 使用隐式转换替代.NET中的多重继承

.net - 使用 .NET 进行 Prolog

c# - 从字符串加载图像

c# - 如何在 WCF 中返回 IEnumerable ?现有连接被远程主机强制关闭

.net - WCF SOAP 操作

c# - WCF 端点让我抓狂