【问题标题】:Passing an object list from a wcf service to an asp.net web application将对象列表从 wcf 服务传递到 asp.net Web 应用程序
【发布时间】:2016-01-04 13:10:58
【问题描述】:

我通过 WCF 服务在 Windows 服务和 asp.net Web 应用程序之间进行通信。例如:我将数据从 windows 服务传递到 wcf 服务,然后再传递到 Web 应用程序。适用于字符串、整数和长整数,但我无法传递对象列表。

有合适的方法吗?

asp.net 网络应用程序

动作

WcfService.ServiceClient1 client = new WcfService.ServiceClient1("BasicHttpBinding_IService1");
ViewBag.s  = client.GetDiretorySize("something").ToString();

Wcf 服务

IService1

[OperationContract]
List<Objects> GetDirectorySize(string path);

服务1

public List<Objects> GetDirectorySize(string path)
{
    List<Objects> size = dh.GetSize(path);
    return size;
}

【问题讨论】:

  • 我有一个 wcf 服务和一个作为客户端的 asp.net Web 应用程序。我的windows服务引用了wcf服务。然后我从调用正在运行的服务中的方法的 Web 应用程序调用 wcf 服务中的方法。
  • 您能否展示您的 WCF 服务中方法的代码以及您的应用对该方法的调用?

标签: c# asp.net .net wcf service


【解决方案1】:

确保您传递的类是在 WCF 服务的接口中定义的(默认为 IService1.cs)。还要确保该类被定义为 DataContract 和 DataMember

例如

[DataContract]
class MyClass
{
    [DataMember]
    string MyString { get; set;}
}

【讨论】:

  • 这些类是在我的 windows 服务中定义的,它在 wcf 服务中被引用。有没有一种简单的方法可以将它们带入 wcf 服务?
【解决方案2】:

从你的问题中不清楚你是否尝试过这个但试一试:

[OperationContract]
List<object> GetDirectorySize(string path);

然后把方法改成:

public List<object> GetDirectorySize(string path)
{
    List<object> MyList = new List<object>();
    //Add items to your list...
    return MyList;
}

【讨论】:

  • 所以我会在 wcf 服务中添加项目?
  • @Duck - 这取决于你想要做什么。您只是说它适用于字符串、整数和长整数,但不适用于列表。我假设您显示的代码是指这个。所以我已经改变了它,现在它会返回一个列表。如果您解释一下您通常会尝试做什么,我可能会提供进一步的帮助。
  • 这正是我想要做的,但列表来自 wcf 服务中引用的 Windows 服务。等我编辑我的帖子。想象一下 Getsize 返回一个对象列表。 dh.GetSize 将是我的 Windows 服务中的一个方法。
  • @Duck - 所以您试图将对象列表返回到您的应用程序中,该列表由您的 Windows 服务中的 GetSize 返回?为什么不简单地在你的应用中引用你的 windows 服务而不是使用 WCF 服务来返回它们呢?
  • 因为这会在服务主动运行时引起麻烦。
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2016-02-12
  • 2010-12-04
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
相关资源
最近更新 更多