我正在處理遺留的Web服務,並且遇到了麻煩,試圖調整方法對以前定義的XML的響應。可悲的是,改變WSDL是沒有問題的,並且使問題進一步複雜化,它與WSDL.exe工具不兼容。 !Webservice返回自定義XML
的哦 - 所以通緝XML:
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Response xmlns="my/Namespace">Success</Response>
</soap:Body>
</soap:Envelope>
通過實驗 - 因爲我在.NET不流利 - 我已經達到下面的解決方案,這將工作,如果這兩種方法使用不同的XML標籤。不幸的是,當ResponseElementName
被設置爲相同的值它「休息」,出現以下錯誤的Web服務:
The XML element 'Response' from namespace 'my/Namespace' references a method and a type. Change the method's message name using WebMethodAttribute or change the type's root element using the XmlRootAttribute.
因此,有另一種方式來實現XML必殺技不改變整個系統?
預先感謝您!
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml;
using System.Xml.Serialization;
[WebService(Name = "WSOcean",
Namespace = "my/Namespace"
)]
public class WSOcean : System.Web.Services.WebService
{
[WebMethod]
[SoapDocumentMethod(
Action = "Method1",
RequestNamespace = "my/Method1/Namespace",
ResponseElementName = "Response"
)]
[return: XmlText(DataType = "string")]
public string Method1(int MessageType)
{
return "Example message 1";
}
[WebMethod]
[SoapDocumentMethod(
Action = "Method2",
RequestNamespace = "my/Method2/Namespace",
ResponseElementName = "Response"
)]
[return: XmlText(DataType = "string")]
public string Method2(bool MessageStatus)
{
return "Random message 2";
}
}