gpt4 book ai didi

wcf - 使用 WCF 服务返回 DataTable 对象

转载 作者:行者123 更新时间:2023-12-04 16:17:29 25 4
gpt4 key购买 nike

这是我在 WCF 尝试在响应中发送 DataTable 时遇到的一个奇怪问题。我有以下服务契约(Contract):

[ServiceContract]
public interface ISapphireDataService {
[OperationContract]
DataTable LoadData(string query, DateTime start, DateTime end);

[OperationContract]
string LoadDataTest();
}

以及以下方法的实现(其中 provider 是一个进行数据库调用并返回 DataTable 的类):
public DataTable LoadData(string query, DateTime start, DateTime end) {
//DataSet temp = new DataSet();
//temp.Tables.Add(provider.LoadData(query, start, end).Copy());
//return temp;

return provider.LoadData(query, start, end).Copy();
}

public string LoadDataTest() {
return "Hello World!";
}

现在,当我这样离开时,调用 LoadData(...) 方法时总是会出错:

An error occurred while receiving the HTTP response to http://localhost:8731/Design_Time_Addresses/DataProviderServiceLibrary/SapphireDataService/. This could be due to the service endpoint binding not using the HTTP protocol.
This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down).
See server logs for more details.



这很奇怪,因为该服务被配置为使用 wsHttpBinding,我假设它使用 HTTP 协议(protocol)。这个 如果我尝试调用 LoadDataTest() 方法,则不会发生错误!

所以我所做的就是把我从数据库中得到的这个表放到一个 DataSet 对象中,它就可以工作了!没有错误或类似的东西。 但是,在 DataSet 中返回的表是 EMPTY。 所有字段均为 Null,并且没有数据被正确传输/反序列化,看起来:(

这似乎是一个常见问题,但我还没有看到有效的答案。有任何想法吗?

最佳答案

我知道这是一个老问题,但也许有人仍然遇到同样的问题(就像我一样)。
我面临着同样令人困惑的错误信息,当它击中我时,我花了几个小时敲打我的头......

    public DataTable GetDataTable()
{
DataTable dt = new DataTable(**"MY_NAME"**);
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Caption", typeof(string));

dt.Rows.Add(new object[] { 1, "hooray!" });
return dt;
}

你应该给你的 DataTable 一个名字,我使用了一个重载的构造函数并且没有更多的错误!

编辑:
当然,您真的不应该使用 DataTable 或 DataSet 作为 WCF 服务的返回类型。对我来说,这只是为了测试目的,因为我认为这是从数据库和网络中获取某些内容的最快方法....男孩是我错了 :)

关于wcf - 使用 WCF 服务返回 DataTable 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1380630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com