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

时间:2012-04-25 00:48:42

标签: c# asp.net asmx

您是否知道将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,如果这样可以更容易 - 可能会在几个月后转换它。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你有什么尝试?你遇到了什么错误?您的代码如何?

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

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

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