Как я могу удалить префикс в сгенерированном конверте SOAP? - PullRequest
0 голосов
/ 07 марта 2019

После этого article / tutorial я заметил, что элементы в теле сгенерированного конверта SOAP содержат префикс mic:.

Как мне избавиться от префикса?

Я использую MessageContract:

namespace GettingStartedLib.Message
{
    [MessageContract]
    public class CalculationMessage
    {
        public CalculationMessage() { }

        public CalculationMessage(string operation, double firstNumber, double secondNumber, double result)
        {
            Operation = operation;
            FirstNumber = firstNumber;
            SecondNumber = secondNumber;
            Result = result;
        }

        public CalculationMessage(CalculationMessage message)
        {
            Operation = message.Operation;
            FirstNumber = message.FirstNumber;
            SecondNumber = message.SecondNumber;
            Result = message.Result;
        }

        [MessageHeader]
        public string Operation { get; set; }

        [MessageBodyMember]
        public double FirstNumber { get; set; }

        [MessageBodyMember]
        public double SecondNumber { get; set; }

        [MessageBodyMember]
        public double Result { get; set; }
    }
}

Что используется Сервисом:

namespace GettingStartedLib
{
    public class CalculatorService : ICalculator
    {
        public CalculationMessage Calculate(CalculationMessage request)
        {
            CalculationMessage response = new CalculationMessage(request);
            switch(request.Operation.ToLower())
            {
                case "add":
                    response.Result = request.FirstNumber + request.SecondNumber;
                    break;
                case "divide":
                    response.Result = request.FirstNumber / request.SecondNumber;
                    break;
                case "multiply":
                    response.Result = request.FirstNumber * request.SecondNumber;
                    break;
                case "substract":
                    response.Result = request.FirstNumber - request.SecondNumber;
                    break;
                default:
                    response.Result = 0.0D;
                    break;
            }
            return response;
        }
    }
}

который потребляет интерфейс:

using GettingStartedLib.Message;
using System.ServiceModel;

namespace GettingStartedLib
{
    [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
    public interface ICalculator
    {
        [OperationContract]
        CalculationMessage Calculate(CalculationMessage message);
    }
}

Сгенерированный конверт SOAP выглядит следующим образом:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mic="http://Microsoft.ServiceModel.Samples">
   <soapenv:Header>
      <mic:Operation>?</mic:Operation>
   </soapenv:Header>
   <soapenv:Body>
      <mic:CalculationMessage>
         <!--Optional:-->
         <mic:FirstNumber>?</mic:FirstNumber>
         <!--Optional:-->
         <mic:Result>?</mic:Result>
         <!--Optional:-->
         <mic:SecondNumber>?</mic:SecondNumber>
      </mic:CalculationMessage>
   </soapenv:Body>
</soapenv:Envelope>
...