是否可以创建一个返回多个字符串的C#Web服务,而不会生成复杂类型? (因为我的客户端无法处理复杂的类型,我需要返回两个名称为“wwretval”和“wwrettext”的字符串)
我已经尝试创建一个结构或类,或者使用params来创建它,但它总是在WSDL中生成一个复杂的类型。
答案 0 :(得分:1)
您是否可以将它们作为XML blob发送,或者,如果不这样做,请将字符串打包成单个字符串分隔符,使用非打印字符(例如\ 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:How do I include my own wsdl in my Webservice in C#
答案 1 :(得分:0)
您可以发送由';'分隔的2个字符串。客户端拆分了字符串。
(来自地狱的牛仔编码员)