如何将可选参数发送到c#中的“webservice”?

时间:2012-02-26 04:46:31

标签: c# asp.net web-services asmx

我有一个带签名的网络服务:

[WebMethod(EnableSession = true)]
public Box FetchBox(string boxId, string p1, string p2, string p3 )

我通过jquery ajax调用此Web服务:

$.ajax({
  url: "/WS/Ajaxify.asmx/FetchBox",
  data: "{ 'boxId': '" + boxId + "' }",
  dataType: "json",
  type: "POST",
  contentType: "application/json; charset=utf-8"
});

我想仅使用p1调用FetchBox一次,稍后使用p2调用FetchBox,而不是p1,依此类推。

在很多情况下我需要用p1或p2或p3或者......中的任何一个来调用FetchBox方法 参数。我不喜欢发送所有参数,因为系统是基于插件的,插件不知道其他参数。

c#4中的可选参数不适用于Web服务。

params string []参数在这里不合适,因为我需要知道参数名称。

1 个答案:

答案 0 :(得分:3)

您无法将可选参数发送到SOAP Web服务。 SOAP协议没有可选参数的概念。

此外,您根本不应该使用ASMX服务。这是一项不应用于新开发的传统技术。应该使用WCF。