我已经使用Visual Studio制作了c# Web Service
。我有一个叫WebMethod
的{{1}}
它收到一个类Parameter。我从SoapUI调用它
这就是从SoapUI获得的方式。
HelloWorld
这是我的Web方法及其作为参数接收的类
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:HelloWorld>
<!--Optional:-->
<tem:Request>
<!--Optional:-->
<tem:BGBAHEADER>
<!--Optional:-->
<tem:Identificadores>
<!--Optional:-->
<tem:IdMensaje idEsquema="?"/>
<!--Optional:-->
<tem:IdMensajeAnterior idEsquema="?"/>
<!--Optional:-->
<tem:IdOperacion idEsquema="?"/>
</tem:Identificadores>
<!--Optional:-->
<tem:ModuloAplicativo>
<!--Optional:-->
<tem:IdGalicia>?</tem:IdGalicia>
<!--Optional:-->
<tem:IdConsumidor>?</tem:IdConsumidor>
<!--Optional:-->
<tem:IdProveedor>?</tem:IdProveedor>
</tem:ModuloAplicativo>
<!--Optional:-->
<tem:Equipo ip="?" nombre="?"/>
<!--Optional:-->
<tem:Origen>
<!--Optional:-->
<tem:ModuloAplicativo>
<!--Optional:-->
<tem:IdGalicia>?</tem:IdGalicia>
<!--Optional:-->
<tem:IdConsumidor>?</tem:IdConsumidor>
<!--Optional:-->
<tem:IdProveedor>?</tem:IdProveedor>
</tem:ModuloAplicativo>
<!--Optional:-->
<tem:Canal>?</tem:Canal>
<!--Optional:-->
<tem:OrganizacionInterna tipo="?" id="?"/>
<!--Optional:-->
<tem:Equipo ip="?" nombre="?"/>
<!--Optional:-->
<tem:Terminal>?</tem:Terminal>
<tem:FechaHoraCreacion>?</tem:FechaHoraCreacion>
<!--Optional:-->
<tem:IdCliente idEsquema="?"/>
<!--Optional:-->
<tem:Operador idEsquema="?"/>
<!--Optional:-->
<tem:Supervision>?</tem:Supervision>
</tem:Origen>
</tem:BGBAHEADER>
<!--Zero or more repetitions:-->
<tem:Especie>
<!--Optional:-->
<tem:CodigosEspecie>
<!--Optional:-->
<tem:CodigoCV>?</tem:CodigoCV>
<!--Optional:-->
<tem:AliasFinanciera>?</tem:AliasFinanciera>
</tem:CodigosEspecie>
<!--Optional:-->
<tem:Mercado>?</tem:Mercado>
<!--Optional:-->
<tem:Plazo>?</tem:Plazo>
<!--Optional:-->
<tem:CodigoDivisa>?</tem:CodigoDivisa>
</tem:Especie>
</tem:Request>
</tem:HelloWorld>
</soapenv:Body>
</soapenv:Envelope>
看起来不错。 它确切地显示了我想要的...
问题是我收到此错误。
[WebMethod]
public string HelloWorld(Request Request)
{
return "Hola ";
}
public class Request
{
[XmlElement(ElementName = "BGBAHEADER")]
public BGBAHEADER BGBAHEADER { get; set; }
[XmlElement(ElementName = "Especie")]
public List<Especie> Especie { get; set; }
}
如果我使用其他名称<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>System.Web.Services.Protocols.SoapException: El servidor no puede leer la solicitud. ---> System.InvalidOperationException: Error en el documento XML (43, 53). ---> System.FormatException: La cadena de entrada no tiene el formato correcto.
en System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
en System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
en Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read8_OrganizacionInterna(Boolean isNullable, Boolean checkType)
en Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read11_Origen(Boolean isNullable, Boolean checkType)
en Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read12_BGBAHEADER(Boolean isNullable, Boolean checkType)
en Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read15_Request(Boolean isNullable, Boolean checkType)
en Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read16_HelloWorld()
en Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.Deserialize(XmlSerializationReader reader)
en System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- Fin del seguimiento de la pila de la excepción interna ---
en System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
en System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
--- Fin del seguimiento de la pila de la excepción interna ---
en System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
en System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()</faultstring>
<detail/>
</soap:Fault>
</soap:Body>
</soap:Envelope>
更改了标签<tem:BGBAHEADER>
,则该标签可以正常运行,但是<tem:bgbaheader>
收到的参数为空
我想念什么?为什么它不接受此标签?
谢谢