Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net asmx web服务和关键值参数_.net_Asmx - Fatal编程技术网

.net asmx web服务和关键值参数

.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,它可以解决

我目前有一个定义如下的asmx方法:

[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数据。我看不出这将如何工作……数据是否已完全填充或为空?我看不出这将如何工作……数据是否已完全填充或为空?