Configuração do cabeçalho no SOAP com asp.net 3.5 WCF
-
24-09-2019 - |
Pergunta
Eu sou muito novo em sabão, então fique com calma comigo. Estou tentando configurar um serviço de sabão que aceita o seguinte formato de cabeçalho:
<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>
O aplicativo em que estou incorporando esse serviço é um aplicativo da web ASP.NET 3.5 e já configurei um terminal SOAP usando o WCF. Eu configurei um serviço básico para garantir que o WCF funcione e funcione bem (desconsiderando o cabeçalho). Ouvi dizer que o formato acima segue a segurança do WS, então adicionei o WSHTTPBINDING no 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>
Baixei um chicote de teste (SOAPUI) e colei em uma mensagem de teste com o cabeçalho acima e voltei com um erro de solicitação de 400 ruins.
... Pelo que vale a pena, estou executando o Visual Studio 2008 usando o IIS7.
Sinto que estou indo em círculos, então qualquer ajuda seria incrível. Desde já, obrigado.
Solução
Descobriu isso. Consegui personalizar o que foi gerado no WSDL usando MessageContracts
(http://msdn.microsoft.com/en-us/library/ms730255.aspx). Isso me permitiu especificar o formato do cabeçalho. Para cada nó que continha nós filhos, criei uma classe para representar esse nó e usei as ferramentas de serialização do .NET (por exemplo, XmlElementAttribute
, XmlArrayAttribute
, etc.) para especificar como isso deve ser refletido no gerado WSDL
. DataContract
também poderia ser usado, embora pelo meu entendimento DataContract
foi apenas para formatos básicos e não permite que você realmente mergulhe em como é formatado.
Espero que isso ajude qualquer pessoa a ter problemas semelhantes.
Se alguém que souber mais sobre sabão encontrar uma falha, por favor me avise. A entrada é muito apreciada.