Я пытаюсь понять, как создать / разработать конечную точку Multipart WCF Soap, которая принимает вложения в качестве входных параметров, разделенных «MIME-разделителем».
Я получил пример того, кто запрашивает такая конечная точка могла бы выглядеть, но я не понимаю, как создать службу для получения запроса.
Итак, полученный мной пример был примерно таким (к вашему сведению, я удалил информацию из соображений безопасности):
--MIME11111.11111
<SOAP-ENV:Envelope xmlns:SOAP-ENV="" xmlns:eb="" xmlns:xsi="" xsi:schemaLocation="">
<SOAP-ENV:Header>
<eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:version="2.0">
<eb:From>
<eb:PartyId eb:type="TYPE1">NUMBER</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="TYPE2">NUMBER</eb:PartyId>
</eb:To>
<eb:CPAId>ID</eb:CPAId>
<eb:Service eb:type="TYPE3">TEXT</eb:Service>
<eb:Action>TEXT</eb:Action>
<eb:MessageData>
<eb:MessageId>ID</eb:MessageId>
<eb:Timestamp>DATE</eb:Timestamp>
</eb:MessageData>
</eb:MessageHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<eb:Manifest eb:version="2.0">
<eb:Reference xlink:href="cid:payload-1" xlink:role="aop:ROOT"/>
</eb:Manifest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
--MIME11111.11111
Content-ID: payload-1
<?xml version="1.0" encoding="UTF-8"?>
<aop:ROOT xsi:schemaLocation="" xmlns:aop="" xmlns:xsi="">
<aop:ELEMENT>
<aop:SUBELEMENT11>TEXT</aop:SUBELEMENT11>
<aop:SUBELEMENT12>
<aop:SUBELEMENT21>NUMBER</aop:SUBELEMENT21>
<aop:SUBELEMENT22>NUMBER</aop:SUBELEMENT22>
</aop:SUBELEMENT12>
</aop:ELEMENT>
</aop:ROOT>
--MIME11111.11111--
То, что я сделал до сих пор:
- Создал проект WCF в Visual Studio.
Создал свой интерфейс следующим образом:
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(Method = "Post", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/PostBusinessData")]
PostBusinessDataResponseContract PostBusinessData(Manifest data);
}
[MessageContract]
public class Manifest
{
[MessageHeader]
public Headers MessageHeader { get; set; }
[MessageBodyMember]
public Stream Reference { get; set; }
}
[MessageContract]
public class PostBusinessDataResponseContract
{
[MessageBodyMember]
public string PostBusinessDataResponse { get; set; }
}
Создал мой контроллер / службу следующим образом:
public class Service1 : IService1
{
public PostBusinessDataResponseContract PostBusinessData(Manifest data)
{
return new PostBusinessDataResponseContract() { PostBusinessDataResponse = "It Works"};
}
}
Мой класс заголовка был создан путем «специальной вставки» XML структура между элементами «заголовка» из приведенного выше примера.
У меня есть класс Model для заголовка soap -envelope, который в значительной степени настроен, за исключением некоторых атрибутов элементов. появляются как подэлементы в t он сгенерировал структуру запроса.
Но главное, что я не совсем понимаю, как построить код для параметра in в отношении вложения. Мне кажется, что Attachment в примере multipart входит как поток, но как поток чего? Файл, xml строка / текст? единственное, что содержит ссылка в конверте SOAP, - это так называемый «Content-ID». Никакого имени файла, ничего больше.
Как мне настроить мою конечную точку в моей резервной копии, чтобы иметь возможность использовать тип запроса, показанный в примере выше, действительно мой вопрос.