Как я могу удалить префикс в сгенерированном конверте SOAP?

#c# #wcf #soap #envelope

#c# #wcf #soap #конверт

Вопрос:

После прочтения этой статьи / руководства я заметил, что элементы в теле сгенерированного конверта 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 = resu<
        }

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

        [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>
  

Комментарии:

1. Можете ли вы найти это пространство имен где-нибудь в своем коде? xmlns:mic="http://Microsoft.ServiceModel.Samples"

2. Не могу его найти, также искал xmlns:mic , но тоже не могу найти

3. У меня есть это: [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] public interface ICalculator

4. И это сделано mic: из Microsoft. Замените его своим собственным модным NS.

5. Ах… Спасибо!