我需要从这个XML更改FORMULARIO'S前缀(Tem:TO Men1 :):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:men="http://Mensajes.General.inHeader" xmlns:tem="http://tempuri.org/" xmlns:men1="http://Mensajes.Formularios.Guardar">
<soapenv:Header>
<men:inHeader>
<DSUSUARIO></DSUSUARIO>
<PWDUSUARIO></PWDUSUARIO>
</men:inHeader>
</soapenv:Header>
<soapenv:Body>
<tem:Guardar> <!--OperationContract-->
<tem:FORMULARIO> <!--DataContract-->
</tem:FORMULARIO>
</tem:Guardar>
</soapenv:Body>
</soapenv:Envelope>
问题是我无法将命名空间设置为OperationContract来覆盖命名空间基础。在此追逐中,OperationContract是来自Xml的DataContract的父级。
我的代码是:
[ServiceContract(Namespace = "http://tempuri.org/")]
public interface IComportamiento
{
[OperationContract]
[XmlSerializerFormat]
Resultado Guardar(FORMULARIO FORMULARIO);
}
public class Implementacion : IComportamiento
{
public Resultado Guardar(FORMULARIO FORMULARIO)
{
...
}
}
[DataContract]
public class FORMULARIO
{
}
MessageContract可以更改Root元素的命名空间,但它会删除operationcontract的元素,返回类型也应该更改为FORMULARIO。
[ServiceContract(Namespace = "http://tempuri.org/")]
public interface IComportamiento
{
[OperationContract]
FORMULARIO Guardar(FORMULARIO FORMULARIO);
}
[MessageContract(IsWrapped = true, WrapperName = "FORMULARIO", WrapperNamespace = "http://Mensajes.Formularios.Guardar")]
public class FORMULARIO
{
}