通过 asmx 传递集合
我有一个对列表(CarType(Enum),code(string))。不幸的是,这个集合中的代码并不唯一。
Van,C1
Van,C2
Pickup,C1
如何通过 asmx webservice 传递此集合。
现在我有 KeyValuePair[] 作为 webMethod 中的参数,
[webmethod]
public void DestroyCars(KeyValuePair<string, CarType>[] cars)
{
//implementation.
}
但是当我更新我的 webreference(不是服务引用)并将 KeyValuePair[] 的实例放入时,
service.DestroyCars(someinstance of KeyValuePair<string, CarType>[])
我得到了异常,因为我必须在那里 KeyPairValuOfStringCarType。
为什么会这样以及如何解决?
更清楚地说:
我想通过webservice传递多维集合。
我创建
[webmethod] 公共无效DestroyCars(KeyValuePair []汽车) { //执行。 。
我更新了我的应用程序的网络引用
当我想使用 KeyValuePair[] 的新实例从我的应用程序调用此 webmethod 时,我收到错误消息,表明此参数不可分配给我的 webmethod 的参数类型。
Intellisense 告诉我这个参数的类型是 KeyPairValuOfStringCarType,但不是 true。
我在 net.reflector 中检查了这种类型的类型,发现它是一个字符串。
我知道没有任何意义。这是我寻求帮助的方式:/
I have a list of pairs (CarType(Enum), code(string)). Unfortunately in this collection codes are not unique.
Van,C1
Van,C2
Pickup,C1
How to pass this collection via asmx webservice.
Now I have KeyValuePair[] as parametr in webMethod
[webmethod]
public void DestroyCars(KeyValuePair<string, CarType>[] cars)
{
//implementation.
}
But when I update my webreference(not servicereference) and put instance of KeyValuePair[] in
service.DestroyCars(someinstance of KeyValuePair<string, CarType>[])
I get exception, because I must there KeyPairValuOfStringCarType.
Why is that and how to fix it ?
To be more clear:
I want to pass multidimension collection through webservice.
I create
[webmethod]
public void DestroyCars(KeyValuePair[] cars)
{
//implementation.
}
I update webreference of my application.
When I want to call this webmethod from my application with new instance of KeyValuePair[] I get error that this parameter is not assignable to parameter type of my webmethod.
Intellisense tells me that type of this parameter is KeyPairValuOfStringCarType with is not a true.
I check type of this type in net.reflector and I see that is a string.
I know there is no sense. This is way I ask for help :/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您遇到此错误的原因:
是因为当 asp.net 为您创建 Web 服务代理(Web 服务引用)时,它会“复制”任何自定义您的 Web 服务公开的类型,在本例中,
KeyValuePair
在代理中转换为KeyValuePairOfStringCarType
,以便您可以将这些类型传递到 服务您需要做的就是调用您的 Web
(这对我有用,在 Visual Studio 2008 中,针对
asmx
Web 服务):然后您可以更新您的 Web 服务引用并编写类似的内容调用您的 Web 服务的代码中的以下内容:The reason you're encountering this error:
Is because when asp.net creates the web-service proxy (the web service reference) for you, it "duplicates" any custom types that your web service exposes, in this instance
KeyValuePair<string, CarType>
gets converted toKeyValuePairOfStringCarType
in the proxy, so that there's a way for you to pass these into the web service.What you need to do to call your webservice is (this worked for me, in Visual Studio 2008, targeting an
asmx
web service):You can then update your web service reference and write something similar to the following in the code that calls your web service: