Настройка заголовка в SOAP с ASP.NET 3.5 WCF - PullRequest
2 голосов
/ 05 апреля 2010

Я довольно новичок в SOAP, так что будьте спокойны со мной. Я пытаюсь настроить службу SOAP, которая принимает следующий формат заголовка:

<soap:Header>
   <wsse:Security>
      <wsse:UsernameToken wsu:Id='SecurityToken-securityToken'>
         <wsse:Username>Username</wsse:Username>
         <wsse:Password>Password</wsse:Password>
         <wsu:Created>Timestamp</wsu:Created>
      </wsse:UsernameToken>
   </wsse:Security>
</soap:Header>

Приложение, в которое я включаю эту службу, является веб-приложением ASP.NET 3.5, и я уже настроил конечную точку SOAP с помощью WCF. Я настроил базовый сервис, чтобы убедиться, что WCF работает и работает нормально (без учета заголовка). Я слышал, что приведенный выше формат соответствует WS-Security, поэтому я добавил WSHttpBinding в web.config:

<service name="Nexternal.Service.XMLTools.VNService"
         behaviorConfiguration="VNServiceBehavior">
  <!--The first endpoint would be picked up from the confirg
  this shows how the config can be overriden with the service host-->
  <endpoint address=""
            binding="wsHttpBinding"
            contract="Nexternal.Service.XMLTools.IVNService"/>
</service>

Я скачал тестовый жгут (soapUI) и вставил тестовое сообщение с указанным выше заголовком, и оно вернулось с ошибкой 400 Bad Request.

... для чего я стою, я использую Visual Studio 2008 с использованием IIS7.

Я чувствую, что иду по кругу, поэтому любая помощь будет потрясающей. Заранее спасибо.

1 Ответ

3 голосов
/ 07 апреля 2010

Разобрался. Я смог настроить то, что было сгенерировано в WSDL, используя MessageContracts (http://msdn.microsoft.com/en-us/library/ms730255.aspx).). Это позволило мне указать формат заголовка. Для каждого узла, содержащего дочерние узлы, я создал класс для представления этого узла и использовал Также можно использовать инструменты сериализации .NET (например, XmlElementAttribute, XmlArrayAttribute и т. Д.), Чтобы указать, как это должно отражаться в сгенерированном WSDL. DataContract, хотя, насколько я понимаю, DataContract был только для основных форматов и не позволяйте вам действительно погрузиться в то, как он отформатирован.

Надеюсь, это поможет любому, у кого есть подобные проблемы.

Если кто-то, кто знает больше о SOAP, обнаружит недостаток, пожалуйста, дайте мне знать. Вклад очень ценится.

...