将对象或结构传递给 .asmx Web 服务

本文关键字:asmx Web 服务 对象 结构 | 更新日期: 2023-09-27 18:32:13

您知道将对象或结构从 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命名空间不同。

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

通过 Web 服务传递对象

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

将对象或结构传递给 .asmx Web 服务

我不知道

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

你试过什么?您遇到哪些错误?你的代码是什么样的?

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

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

请注意,在序列化期间,将删除除默认(无参数)构造函数和属性之外的所有内容。这是因为在将对象传递给 Web 服务时,您实际上不是在传递 .NET 对象,而是在传递(序列化的)数据。相应的类型应通过服务合同提供。