C# ASP.Net Web服务接收未定义数量的键值对

C# ASP.Net Web服务接收未定义数量的键值对,c#,.net,web-services,asmx,C#,.net,Web Services,Asmx,我一直在与一些表单处理提供者合作,他们似乎有一个键值对数据的通用接收器。我正在尝试这样做,但我尝试使用的每个数据结构都实现了一个接口,因此无法序列化容器以在webmethod中使用 我甚至尝试过使用基本的“对象”数据类型,但没有成功 [WebMethod] public void processResponse( object lead ){ Dictionary<string, string> DList = (Dictionary<

我一直在与一些表单处理提供者合作,他们似乎有一个键值对数据的通用接收器。我正在尝试这样做,但我尝试使用的每个数据结构都实现了一个接口,因此无法序列化容器以在webmethod中使用

我甚至尝试过使用基本的“对象”数据类型,但没有成功

[WebMethod] 
        public void processResponse( object lead ){
            Dictionary<string, string> DList = (Dictionary<string,string>) lead;

如何使用此Web服务接收未定义数量的键值对,以便对接收到的数据执行业务逻辑,并使用统一的输入方法智能地路由数据?静态类型的类在此实例中不起作用,因为不同类型的Lead具有不同数量的字段/属性。

切换到WCF,默认情况下,WCF使用DataContractSerializer类,该类能够像字典一样序列化键值对


您的服务的基本结构将完全相同,使用BasicHttpBinding,您拥有几乎相同的基于Http和Soap的通信协议。花30分钟学习WCF教程,你几乎不想回到原来的*.asmxes。

我最后做的是添加一个通用处理程序。我将QueryString参数复制到一个字典中,并使用其中的值。它设置了一个数据收集的中心点,我能够从那里应用我的业务逻辑-似乎符合我想要的目的。

您使用传统ASMX服务而不是WCF有什么原因吗?那么,您的意思是没有理由不使用WCF?然后我的建议是使用WCF。我对WCF一无所知——停止学习新的一面并不是真正明智的做法。也许在将来这将是一个选项,因为WCF使用DataContractSerializer可以序列化键值对。如果您将Dictionary作为参数,它将不会与*.asmx一起工作,但会与WCF服务一起工作。ASMX中几乎所有限制的答案都是使用WCF。我没有时间学习WCF的答案是,学习WCF的子集并不需要花费大量的时间,它相当于您使用ASMX所做的工作。