Не могли бы вы отправить их как большой двоичный объект 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 #