7

我有一个带有多个参数的网络方法。web方法只依赖2个字段,其余都是可选的。

   [OperationContract]
    public string WarehouseContactInformation(int WAID (Required), string CN (Required), string CT (Optional), string CC (Optional), string CFN (Optional), string CD (Optional), string CE (Optional),string CW (Optional))

如何将这些参数声明为可选参数,这样当我调用 Web 方法时,我只需传递我拥有值的字段,例如:

WarehouseContactInformation(1,'Bill','00012311')
WarehouseContactInformation(1,'Bill','00012311','12415415','123525')
4

2 回答 2

12

你不能。Web 方法不支持可选参数。当您为 Web 方法生成代理时,您会获得特定的签名,您的客户端和服务器将根据该签名交换消息。但它不能传递可选参数。您可以在服务器端使用默认参数,但没有可选参数。

于 2013-04-03T10:59:07.940 回答
1

我所做的是:发送与 XML 绑定的参数,并且不绑定可选参数的值,将其留空。

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(
            "<registration>" +
            "<field1>" + value + "</field1>" +
            "<field2>" + value(or leave blank) + "</field2>" +
            "<field3>" + value + "</field3>" +
            "<field4>" + value + "</field4>" +
            "</registration>");

        int status = objectOfService.methodName(xmlDoc);

在网络服务中你可以这样做

    public int UpdateUser(XmlNode node)
    {
       String filed1Value=node["field1"].InnerText;
    }

希望能帮助到你。

于 2013-04-03T11:08:13.413 回答