Служба WCF с не .net настоящим клиентом - PullRequest
2 голосов
/ 03 декабря 2011

Вместо создания службы 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 очень длинный, и я вообще ничего не могу изменить по запросу мыла, потому что наш клиент использует этот запрос и для многих других компаний. И это моя проблема.

  1. Как мне сопоставить содержимое XML NutritionalValues с моим «DataContract»?
  2. Как получить доступ к Заголовку для аутентификации звонящего?

Когда я отлаживаю свой Сервис с помощью сгенерированного вручную 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.

Буду очень благодарен за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...