.net asmx web服务和关键值参数
我目前有一个定义如下的asmx方法:.net asmx web服务和关键值参数,.net,asmx,.net,Asmx,我目前有一个定义如下的asmx方法: [WebMethod] public String Method1(Hashtable form) 它接收具有可变数量属性的json对象,例如: {"form":{"name1":"10","name2":"20"}} 这工作正常,调用时会给出预期的结果,但当我在浏览器中打开web服务地址时,会出现错误: 不支持System.Collections.Hashtable类型,因为它实现了IDictionary 我尝试过其他数据类型,比如List,它可以解决
[WebMethod]
public String Method1(Hashtable form)
它接收具有可变数量属性的json对象,例如:
{"form":{"name1":"10","name2":"20"}}
这工作正常,调用时会给出预期的结果,但当我在浏览器中打开web服务地址时,会出现错误:
不支持System.Collections.Hashtable类型,因为它实现了IDictionary
我尝试过其他数据类型,比如List
,它可以解决这个问题,但在调用该方法时会为空,并且我找不到在这两种情况下都能工作的数据类型
做这件事的“正确”方法是什么?
IDictionary
无法序列化为XML(这就是asmx web服务的工作方式),因此您不能将IDictionary
的任何实现用作返回值或参数
因此,“正确”的方法是使用任何不实现IDictionary
的东西。您可以这样做:
[WebMethod]
public String Method1(params KeyValuePair<string, string>[] formdata)
IDictionary
无法序列化为XML(asmx web服务就是这样工作的),因此不能将IDictionary
的任何实现用作返回值或参数
因此,“正确”的方法是使用任何不实现IDictionary
的东西。您可以这样做:
[WebMethod]
public String Method1(params KeyValuePair<string, string>[] formdata)
目前,我可以将此作为解决办法:
[WebMethod]
public String Method1(Object form)
{
Dictionary<String, Object> data = (Dictionary<String, Object>)form;
[WebMethod]
公共字符串方法1(对象形式)
{
字典数据=(字典)形式;
并且service.asmx页面加载时不会出错
这对我来说仍然没有意义,但是…目前,我可以将此作为一种解决方法:
[WebMethod]
public String Method1(Object form)
{
Dictionary<String, Object> data = (Dictionary<String, Object>)form;
[WebMethod]
公共字符串方法1(对象形式)
{
字典数据=(字典)形式;
并且service.asmx页面加载时不会出错
但是,这对我来说仍然没有意义…如果遇到异常,如何处理
哈希表
呢?从客户端脚本调用该方法很好,唯一的问题是打开base.asmx。如果遇到异常,如何处理哈希表
呢?从客户端脚本调用该方法很好,唯一的问题是打开base.asmx。我尝试了此方法定义,但得到了“为KeyValuePair[]类型定义的无参数构造函数”错误。我还应该指出,我无法控制传入的json数据。我尝试了此方法定义,但得到了一个“没有为KeyValuePair[]类型定义无参数构造函数”错误。我还应该指出,我无法控制传入的json数据。我看不出这将如何工作……数据是否已完全填充或为空?我看不出这将如何工作……数据是否已完全填充或为空?