#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. Ах… Спасибо!