1

您知道将对象或结构从 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 —— 无论如何,可能会在几个月内转换它。

4

2 回答 2

1

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

于 2012-04-25T16:21:11.760 回答
0

你试过什么?你遇到什么错误?你的代码看起来如何?

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

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

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

于 2012-04-25T01:30:02.607 回答