c# - 返回 json 数据表未收到数据

标签 c# json wcf datatable

我有一个 REST 服务,它返回一个 json 序列化的 DataTable

当我向服务发出请求时,我没有收到任何数据(来自 chrome 的“未收到数据”),但是当我将返回类型更改为 string 并返回一个字符串时,该字符串是序列化的 DataTable,一切正常(除了我必须解析 Json 字符串)。

//Doesn't Work
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
       UriTemplate = "data")]
public DataTable LoadData2() {

    return JsonQueryDatabase2(VCAPSProduction);
}

.

// Works, but returns a json string
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
       UriTemplate = "data")]
public string LoadData2() {

    return JsonConvert.SerializeObject(JsonQueryDatabase2(connString));
}

如何让我的服务使用 DataTable 返回 Json 对象?

最佳答案

我最终选择了 L.B的建议。

using Newtonsoft.Json; // JsonConvert.SerializeObject

...

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
       UriTemplate = "data?limit={limit}")]
public System.ServiceModel.Channels.Message LoadData_Limited(int limit) {

    if (limit <= 0) { return null; }

    string query = ...;

    try {

        ...

        //Return data from query
        DataTable dt = QueryDatabase(connString, query, parameters);
        string serialized = JsonConvert.SerializeObject(dt);
        return WebOperationContext.Current.CreateTextResponse(serialized);

    } catch {
        return null;
    }
}

关于c# - 返回 json 数据表未收到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199739/

相关文章:

c# - 如何在 SplitContainer 的 Splitter 中添加抓取 handle

jquery - 将 JSON 数据发布到 .asmx Web 服务

php - 如何将 json 从 php 传递到 jqPlot 的 javascript?

c# - 清理 Silverlight 输入

c# - 在Mysql c#中通过多表填充GataGridView

c# - 函数中的 InvalidAsynchronousStateException 用于检查控制是否需要调用

javascript - 从警报中的 json 捕获特定值

c# - WCF:StackoverFlow 异常

c# - 要在 C# 中使用 RESTful Web 服务,我应该使用 HttpWebRequest 吗?

c# - 在 IIS 上托管 WCF Web 服务时显式调用服务构造函数