【问题标题】:Passing Objects or Structs to .asmx Web Service将对象或结构传递给 .asmx Web 服务
【发布时间】:2012-04-25 00:48:42
【问题描述】:

您知道将对象或结构从 winform 应用程序传递到 .asmx Web 服务的好方法吗?看起来这在 .NET 中应该很容易,但我没有看到。

Rick Strahl 在 2004 年也有同样的问题,但看起来我正在寻找的东西可能不存在:

http://www.west-wind.com/weblog/posts/2004/Apr/18/Net-Web-Services-and-passing-objects-and-Data

基本上,我只有一个包含 10 个字符串或 int 成员的简单结构。我想将它发送到 asmx Web 服务并保持强类型不变。就是这样。

我尝试在客户端和服务上定义结构。然后我创建了一个包含结构定义的 DLL,并将其包含在我的 Web 服务和客户端中。仍然有问题 b/c 命名空间不同。

我在以下帖子中看到,似乎人们正在做我所描述的事情。我只是不知道如何:

Passing Objects Via Web Service

如果这样做更容易,我可以将服务转换为 WCF —— 无论如何,可能会在几个月内转换它。

【问题讨论】:

  • b/c namespaces were different 是您问题的症结所在,我们需要查看错误消息以及如何重现问题,请编辑您的问题以帮助问题诊断,谢谢!

标签: c# asp.net asmx


【解决方案1】:

我不知道为什么我没有早点想到这一点,但杰里米的回应有所帮助。我没有在客户端和服务上创建对象的定义,而是公开了 Web 服务上的结构定义。当我创建一个结构时,我只是确保它的类型是 global::Webservice.com.mydomain.MyStruct。

【讨论】:

    【解决方案2】:

    你试过什么?你遇到什么错误?你的代码是什么样子的?

    但是,您可能需要将您想要将实例传递给 Web 服务的类标记为 [Serializable] (MSDN),如下所示:

    [Serializable] 
    public class MyObject
    { 
        // Your properties here
        // Your parameterless constructor
    }
    

    请注意,除了默认(无参数)构造函数和属性之外的所有内容都将在序列化过程中被删除。这是因为在将对象传递给 Web 服务时,您实际上不是在传递 .NET 对象,而是传递(序列化的)数据。 对应的类型应该可以通过服务契约获得。

    【讨论】:

      猜你喜欢
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多