【问题标题】:WCF Underlying Connection Error while returning DataTable返回 DataTable 时出现 WCF 基础连接错误
【发布时间】:2012-11-27 05:09:55
【问题描述】:

我创建了返回数据表的 webservices 方法。 但是,我收到了错误:

底层连接已关闭:连接意外关闭

这是我在 IWS 文件中的方法

[ServiceContract]
 public interface IWsBabyCare
 {
    [OperationContract]
    DataTable GetPurchaseOrderDetails();

    [OperationContract]
    DataTable GetPurchaseOrders(int PODID);

  }

这是我在 WS 文件中的方法

public DataTable GetPurchaseOrderDetails()
{
    DataTable POD = new DataTable("POD");
    PurchaseOrderBLL prodBLL = new PurchaseOrderBLL();
    POD = prodBLL.GetPOD();
    POD.TableName = "POD";
    return POD;

}

public DataTable GetPurchaseOrders(int PODID)
{
    PurchaseOrderBLL prodBLL = new PurchaseOrderBLL();
    return prodBLL.GetPurchaseOrders(PODID);
}

我在网上看到向数据表添加名称会有所帮助,但我只会返回一个空的数据表。

【问题讨论】:

  • 您的数据访问代码(.Get)在哪里?您为解决连接问题做了什么?
  • 您不应从服务操作中返回 DataTable 类型。见这里:hanselman.com/blog/…
  • 你最后发现问题了吗?

标签: c# web-services wcf datatable


【解决方案1】:

你得到的异常可能有大约500 different causes

目前我们真正能说的是,您有一个定义了一些操作的服务接口,并且您已经实现了这些操作。

我们对托管服务的方式(控制台、IIS?)或在服务和客户端上指定的 WCF 配置一无所知。您需要在问题中提供此信息。

此外,您的服务操作指定返回类型为 DataTable,这是一个 big 网络服务 no-no。您应该传递精确定义所需数据的类型(例如,如果您的数据库表包含苹果,则应传递返回类型 List<Apple>

这就是我建议你应该继续的方式。

  1. 创建基于控制台的服务和客户端项目。
  2. 创建一个返回一些原始类型(如字符串)的服务操作。
  3. 使所有代码尽可能简单。您应该能够在每个服务和客户端上使用不到 10 行代码和大约 10 行 xml 配置来完成这项工作。
  4. 一旦你设法让这个工作,然后逐渐添加新的操作和更复杂的返回类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多