несколько выходных параметров в веб-сервисе .NET (без сложного типа) - PullRequest
0 голосов
/ 17 сентября 2010

Можно ли создать веб-сервис на C #, который возвращает несколько строк, не генерируя сложный тип?(Поскольку мой клиент не может обрабатывать сложные типы, и мне нужно вернуть ровно 2 строки с именами: "wwretval" и "wwrettext")

Я уже пытался создать структуру или класс или сделатьон без параметров, но он всегда генерировал сложный тип в WSDL.

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Не могли бы вы отправить их как большой двоичный объект XML или, в случае неудачи, упаковать строки в один разделитель строк с помощью непечатаемого символа, такого как \ n, а затем разделить их на другом конце?

Последний не совсем элегантный, но может работать.

Поскольку вы не можете изменить клиента, возможно, вы можете обмануть его, заставив Soap использовать режим RPC с буквальным связыванием:

namespace WebTest
{
    public struct UploadResponse
    {
        public string wwretval;
        public string wwrettext;
    }

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.None)]
    [System.ComponentModel.ToolboxItem(false)]

    public class Service1 : System.Web.Services.WebService
    {

        [SoapRpcMethod(ResponseElementName = "UploadResponse",Use=SoapBindingUse.Literal)]
        [WebMethod]
        public UploadResponse Upload()
        {
           UploadResponse ww = new UploadResponse();

            ww.wwretval = "Hello";
            ww.wwrettext = "World";
            return ww;
        }
    }
}

Это сгенерирует ответ с двумя строками внутри элемента UploadResponse. Затем вы можете сгенерировать поддельный wsdl, как описано здесь: Как мне включить мой собственный wsdl в мой веб-сервис на C #

0 голосов
/ 17 сентября 2010

Вы можете отправить 2 строки, разделенные ';',И клиент разбил строку.

(Ковбойский кодер из ада)

...