visual studio net example ejemplo crear consumir c# .net wcf web-services soap

c# - studio - WCF y jabón 1.1



web service c# visual studio 2017 (3)

El basicHttpBinding utiliza SOAP 1.1, pero en ese caso, tendría un tipo de contenido de application/soap+xml .

Dado que su cliente está enviando text/xml , ¿hay alguna posibilidad de que estén esperando una interfaz REST? Esto sería manejado por WCF webHttpBinding .

Obtenga más información sobre REST en WCF en el Centro de desarrolladores REST de MSDN WCF y consulte la serie de screencast Pluralsight en WCF REST , ¡muy recomendable!

Estoy tratando de crear un servicio que un tercero debería consumir.
El consumidor es compatible con SOAP 1.1, por lo que estoy usando basicHttpBinding para el servidor. Cuando se realiza la solicitud real, algo parece ir mal con los tipos de contenido que espera el servidor. Usando basicHttpBinding no entiendo por qué el servidor todavía espera ''application / soap + xml'' que, según mi conocimiento, solo es requerido por SOAP 1.2.

He usado wireshark para averiguar exactamente de qué se comunicaban esos dos. Ver tcp stream y configurar a continuación.

Cualquier ayuda es apreciada.

Solicitud de aplicación de terceros

POST / HTTP / 1.1

SOAPAction: http://tempuri.org/ITestService/Hello

Tipo de contenido: text / xml; charset = utf-8

Anfitrión: shdesktop: 8000

Longitud del contenido: 297

Esperar: 100-continuar

Conexión: Cerrar

Respuesta del servidor WCF

HTTP / 1.1 415 No se puede procesar el mensaje porque el tipo de contenido ''text / xml; charset = utf-8 ''no era el tipo esperado'' application / soap + xml; charset = utf-8 ''.

Longitud del contenido: 0

Servidor: Microsoft-HTTPAPI / 2.0

Fecha: martes, 09 de febrero de 2010, 14:03:19 GMT

Conexión: cerrar

Configuración del servicio

<system.serviceModel> <services> <service behaviorConfiguration="behTestService" name="ConsoleApplication1.TestService"> <endpoint address="" binding="mexHttpBinding" contract="IMetadataExchange" /> <endpoint address="TestService" binding="basicHttpBinding" contract="ConsoleApplication1.ITestService" /> <host> <baseAddresses> <add baseAddress="http://localhost:8000" /> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="behTestService"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>


En general, cuando recibimos un mensaje / error en un servicio web que incluye el texto:

content type ''text/xml''

Significa que el servidor web devolvió una página de error en lugar de la respuesta xml esperada.


Tenía exactamente el mismo problema: la definición decía que era soap 1.2 pero esperaba 1.1 ya que el tipo de contenido era diferente.

Descubrí que si ajustaba la configuración de mi servidor desde:

... <endpoint address="" .../> <host> <baseAddresses> <add baseAddress="http://localhost:8001/services/fooService" /> </baseAddresses> </host> ...

A:

... <endpoint address="fooService" .../> <host> <baseAddresses> <add baseAddress="http://localhost:8001/services" /> </baseAddresses> </host> ...

El wsdl lo expuso como Soap 1.1 esta vez.