Служба WCF с не.net настоящим клиентом
Вместо создания службы WCF и клиента с помощью сгенерированного кода WSDL, я должен создать службу WCF с заданным запросом SOAP.
Чтобы помочь вам лучше понять, я скопировал основную часть запроса SOAP здесь:
<?xml version="1.0" encoding="windows-1252"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<HeaderContent xmlns="CustomerNamespace.com">
<CallerId>6274</CompanyId>
<Login>mylogin</Username>
<Password>mypassword</Password>
<ResponsibilityType>3</Responsibility>
<ResponsibilityId>189281728</ResponsibilityId>
</HeaderContent>
</soap:Header>
<soap:Body>
<UpdateNutritionalValues xmlns="CustomerNamespace.com">
<NutritionalValues>
<Product id="195739241">
<Created>2011-11-01</Created>
<Owner>8633</Owner>
.
.
.
Итак, мой сервис получит этот SOAP-запрос. Встроенный NutritionalValues
XML очень длинный, и я вообще ничего не могу изменить по запросу мыла, потому что наш клиент использует этот запрос и для многих других компаний. И это моя проблема.
- Как мне сопоставить XML
NutritionalValues
содержание моего "DataContract"? - Как мне получить доступ к Заголовку для аутентификации звонящего?
Когда я отлаживаю свою службу с помощью сгенерированного вручную SOAP-запроса с помощью Fiddler, я получаю нулевое значение параметра
[ServiceContract(Namespace="CustomerNamespace.com")]
public interface IWCFService
{
[OperationContract]
ComplexType UpdateNutritionalValues(NutritionalValues nutVal);
}
[DataContract]
public class NutritionalValues
{
[DataMember(Name="Product")]
public ProductSpecification Product { get; set; }
}
[DataContract]
public class ProductSpecification
{
[DataMember(Name="Created")]
public DateTime Created { get; set; }
[DataMember(Name="Owner")]
public int Owner { get; set; }
}
(Я тоже могу десериализовать XML вручную), но я не знаю, как получить доступ к ( raw?) XML.
Буду очень благодарен за любую помощь!