如何将名称/值对传递给ASMX Web方法?

我正在创建一个基本上远程调用某些数据库调用的Web服务(以便它们通过HTTP而不是1433的默认SQL Server端口发生)。

基本上我一直在尝试将多个参数传递给ASMX WebService上的WebMethod。 参数是:

  • 表示要执行的查询的ID的字符串。
  • 一个DataTable,表示应该填充信息的表的结构。
  • 使用上面的ID表示的查询运行的参数字典(即名称值对)以获得预期结果。
  • 一个对这个问题不重要的布尔值

现在我遇到的问题是ID,DataTable和布尔的字符串都很好,但字典却没有。 我知道默认情况下,XMLSerializing不支持任何实现IDictionary的东西,因此我将字典转换为两个对象数组,一个用于键,一个用于值。

我从客户端发送的内容似乎是正确的。 SOAP数据包包含keys数组和values数组的正确值。

我在WebService端收到的内容(我可以在调用的WebMethod中断)对于两个数组都是null。 不是空数组,只是null。

我已经尝试了很多东西,以便将这些参数传递给webservice(编码为SerializableDictionary,尝试将键/值对阻塞到数据表中,尝试简单地使用两个字符串数组,然后将结果转换回到在WebService端的正确类型)但我绝对没有运气。

所以我想总结一下,我的问题是:

有没有人知道成功发送Name-Value对的好方法,其中Name是一个字符串,而Value几乎可以是任何对象类型,但始终是WebService WebMethod的可序列化对象,这样它们的Name-Values就可以正确解释服务方面。

我不完全确定问题是什么(它可能是我自己的愚蠢)但我从头再次开始,并用2个数组(一个键(字符串)和一个对象(值))实现解决方案)按预期工作。

你提到价值可以是“几乎任何对象类型”,我怀疑它不会飞,可能是它破坏的地方,所有项目都必须是可序列化的。

尝试使用这样的东西:

http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx