@MagDarkElf

Не могу получить тело soap сообщения?

Имеется приходящее Soap сообщение вида
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
      <wsa:To>123@ctr</wsa:To>
      <wsa:From>
         <wsa:Address>321@ctr</wsa:Address>
      </wsa:From>
      <wsa:MessageID>urn:uuid:330ee93a-8a42-4ac7-bbfa-fa9636e8d75c</wsa:MessageID>
      <wsa:RelatesTo>urn:uuid:1c4d8d00-9dce-43dc-aacd-61f20d9e98d6</wsa:RelatesTo>
      <wsa:Action>sm://messages/application/some/response</wsa:Action>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      <openIncidentsResponse xmlns:ns2="http://www..ru/sc/schema/pm">
         <ns2:OpenIncidentsCount>1</ns2:OpenIncidentsCount>
         <ns2:UserId>a6275872-74f3-4bf2-bd17-3147ca4ad9a2</ns2:UserId>
         <ns2:LastDate>2020-01-27T11:51:07.3516144+03:00</ns2:LastDate>
      </openIncidentsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Это объект в который должны распихиваться данные из Soap сообщения
[MessageContract(IsWrapped = false)]
public partial class OpenIncidentsResponseMessage
{
	protected static string prefix = "urn:uuid:";

	[XmlIgnore]
	public Guid MessageId
	{
		get
		{
			String cut;
			if (MessageIdSer.StartsWith(prefix, true, CultureInfo.InvariantCulture))
			{
				cut = MessageIdSer.Substring(prefix.Length);
			}
			else
			{
				cut = MessageIdSer;
			}
			return Guid.Parse(cut);
		}
		set
		{
			MessageIdSer = prefix + value;
		}
	}

	[MessageHeader(Namespace = "http://www.w3.org/2005/08/addressing", Name = "MessageID")]
	public String MessageIdSer
	{
		get;
		set;
	}

	[MessageHeader(Namespace = "http://www.w3.org/2005/08/addressing")]
	public String To { get; set; }

	[MessageBodyMember(Name = "openIncidentsResponse", Namespace = "http://www..ru/sc/schema/pm", Order = 0)]
	public openIncidentsResponse openIncidentsResponse;
}

public partial class openIncidentsResponse
{
        [MessageBodyMember(Namespace = "http://www..ru/sc/schema/pm", Order = 0)]
        public int OpenIncidentsCount;

        [MessageBodyMember(Namespace = "http://www..ru/sc/schema/pm", Order = 1)]
        public Guid UserId;

        [MessageBodyMember(Namespace = "http://www..ru/sc/schema/pm", Order = 2)]
        public DateTime LastDate;
}


Заголовок сообщения(MessageHeader) распихивается нормально, а openIncidentsResponse = null
Проблема в префиксе ns2, если его убрать то всё нормально прорабатывает
Не понимаю как сделать так что бы и с префиксом работало
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
А почему не получить код после автогенерации и уже после его адаптировать?
Кроме того в sdk есть soapclient он вам выдаст рабочий прокси
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы