7

複数のパラメーターを持つ Web メソッドがあります。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);

Webサービスでは、次のようにできます

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

それが役に立てば幸い。

于 2013-04-03T11:08:13.413 に答える