我目前定义的asmx方法如下:
[WebMethod]
public String Method1(Hashtable form)
它接收具有可变数量属性的json对象,例如:
{"form":{"name1":"10","name2":"20"}}
这样可以正常运行并在调用时给出预期的结果,但是当我在浏览器中打开Web服务地址时,我收到错误:
不支持System.Collections.Hashtable类型,因为它实现了IDictionary
我已经尝试过其他数据类型,比如List<DictionaryEntry>
会解决这个问题,但是当调用该方法时它会变空,而且我找不到两种情况都可以使用的东西...
这样做的“正确”方法是什么?
答案 0 :(得分:1)
IDictionary
无法序列化为XML(这是asmx Web服务的工作方式),因此您不能将IDictionary
的任何实现用作返回值或参数。
所以这样做的“正确”方法是使用任何不实现IDictionary
的方法。你可以这样做:
[WebMethod]
public String Method1(params KeyValuePair<string, string>[] formdata)
然后像这样调用它:
service.Method1(new KeyValuePair("name1", "10"), new KeyValuePair("name2", "20"));
答案 1 :(得分:0)
目前,我可以将其作为解决方法:
[WebMethod]
public String Method1(Object form)
{
Dictionary<String, Object> data = (Dictionary<String, Object>)form;
服务.asmx页面加载时没有错误。
这对我来说仍然没有意义......