Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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
C# 如何将可变数量的参数传递给web服务_C#_Web Services_Soap - Fatal编程技术网

C# 如何将可变数量的参数传递给web服务

C# 如何将可变数量的参数传递给web服务,c#,web-services,soap,C#,Web Services,Soap,我们正在尝试创建一个web服务,我们计划向它传递可变数量的变量 这能做到吗 基本上,我们不希望传递所有可能的参数,而是希望只传递设置的值,并使用web服务中设置的默认值 下面是一个我们希望发送的XML示例,根据需要的返回,我们将发送未知数量的函数 <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd

我们正在尝试创建一个web服务,我们计划向它传递可变数量的变量

这能做到吗

基本上,我们不希望传递所有可能的参数,而是希望只传递设置的值,并使用web服务中设置的默认值

下面是一个我们希望发送的XML示例,根据需要的返回,我们将发送未知数量的函数

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <WebMethod xmlns="http://tempuri.org/">
      <domains>
        <function1>
        <title>Some Title</title>
        <type>25</type>
        </function1>
    <function2 />
    <function3>
        <param>13</param>
    </function3>
      </domains>
    </WebMethod>
  </soap:Body>
</soap:Envelope>

一些头衔
25
13

这会起作用还是我们应该用另一种方式来做?

您可以简单地将可变长度数组作为参数传递。

如果您不喜欢数组的概念(这不是slating Konrad的答案-您可能有不同的参数类型),您可以传递复杂对象(即您自己创建的对象)。。缺点是您无法使用ASMX页面进行测试,但需要在代码中完成所有测试(这其实不是一件坏事,特别是如果您已经习惯了的话)。

我将传入一个xml文档,而不是为此执行concreate函数

您示例中的Web服务存在漏洞-消费者需要对该接口和Web服务的内部实现了解太多

XML文档,然后将其与XSD绑定。这样,您就可以预先验证Web服务的输入

看看这些

我还建议将其用于测试Web服务及其免费版本
我同意littlegeek的观点。不要让你的web服务成为硬方法。将其作为接收消息的接收端点。特别是命令消息