Webservices (soap,rest,...) - Problemas con WSDL WCF C#

 
Vista:

Problemas con WSDL WCF C#

Publicado por Veronica (8 intervenciones) el 26/09/2015 21:57:23
Hola a todos,

tengo desarrollado un servicio WCF para un cliente y, debido a unos problemas en la puesta en producción, me piden que la wsdl del servicio y en concreto el soapAction y tns sean relativos, es decir, no hagan referencia al nombre de la máquina. Desconozco a qué se refieren, ¿alguien puede ayudarme? Llevo muy poco tiempo en este tema... :-\

En el código, únicamente hago referencia al nombre de la máquina en el ServiceContract(Namespace="****")] del archivo .cs, ¿qué debo hacer / modificar?

Gracias de antemano,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Problemas con WSDL WCF C#

Publicado por David (8 intervenciones) el 27/09/2015 11:30:51
Puedes poner el web.config?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con WSDL WCF C#

Publicado por Veronica (8 intervenciones) el 27/09/2015 11:36:15
<?xml version="1.0"?>
<configuration>
<appSettings/>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpRuntime/>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IIDLogisticsOrders" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:1561/ ******** FICHERO svc ************"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IIDLogisticsOrders"
contract="ServiceReference1.IIDLogisticsOrders" name="BasicHttpBinding_IIDLogisticsOrders" />
</client>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<!-- <add binding="basicHttpsBinding" scheme="https" /> -->
<add binding="basicHttpBinding" scheme="http"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con WSDL WCF C#

Publicado por David (8 intervenciones) el 27/09/2015 15:46:18
En la línea:
1
2
3
<endpoint address="http://localhost:1561/ ******** FICHERO svc ************"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IIDLogisticsOrders"
contract="ServiceReference1.IIDLogisticsOrders" name="BasicHttpBinding_IIDLogisticsOrders" />

En el atributo address tienes puesta la ruta completa. Pon, por ejemplo /miServicio
1
2
3
<endpoint address="/miServicio"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IIDLogisticsOrders"
contract="ServiceReference1.IIDLogisticsOrders" name="BasicHttpBinding_IIDLogisticsOrders" />

Entonces, para utilizarlo, suponiendo que lo hayas publicado en el IIS en la carpeta servicioWCF, Sería así:

http://localhost/servicioWCF/miServicio

Si en address pones la ruta completa, incluido el http, lo estás haciendo constante. Sin embargo, si pones una ruta relativa como te he puesto, le estás indicando que el acceso al servicio es donde esté instalado MAS la parte de address, convirtiéndolo en relativo.


No se si me explico. Si no, pregunta lo que quieras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con WSDL WCF C#

Publicado por Veronica (8 intervenciones) el 27/09/2015 17:23:37
Hola David,

creo que entiendo a lo que te refieres, ¿debo modificarlo directamente en el web.config?

Entiendo entonces que no hay problema porque en el fichero .cs tenga ServiceContract(Namespace="****")] con * indicando http://Maquina/Ruta, ¿es así?

Por último, cuando me pidieron las modificaciones a realizar, me indicaron que en el WSDL lo tenía incorrecto en las siguientes partes:

<wsdl:definitions ...... targetNamespace=http://Maquina/Ruta ...>

<wsdl:types> <xs:schema ... targetNamespace=http://Maquina/Ruta ...>

<wsdl:operation... wsaw:Action=http://Maquina/Ruta ...>

<wsdl:binding ... <soap:operation soapAction=http://Maquina/Ruta ...>

Mientras que está correcto en:

<wsdl:service ... <wsdl:port ... <soap:address location=http://Maquina/Ruta ...>

¿Con el cambio que me indicas sería suficiente o tendría que hacer alguna modificación más?

Gracias de nuevo por tu gran ayuda!!!

Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con WSDL WCF C#

Publicado por David (8 intervenciones) el 28/09/2015 01:49:58
No importa que esté en el .cs. Tal y como indica el parámetro Namespace del atributo ServiceContract, sirve para poner un namespace a los métodos. Puedes dejarlo o quitarlo, aunque si eres nueva en WCF, te aconsejo que lo quites para no liarte y para que no te salga en el WSDL como targetNamespace.
Con el cambio en el web.config que te he puesto es suficiente.
No te preocupes por el WSDL; El motor del .NET lo genera automáticamente según el web.config y el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con WSDL WCF C#

Publicado por Veronica (8 intervenciones) el 01/10/2015 13:41:13
Hola David, creo que sigo sin solucionar mi problema... Seguramente esté haciendo algo mal, te explico:

En el web.config tengo:

1
2
3
4
5
<client>
      <endpoint address="/CARPETA_IIS/Fichero.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IIDLogisticsOrders"
        contract="ServiceReference1.IIDLogisticsOrders" name="BasicHttpBinding_IIDLogisticsOrders" />
    </client>

Y manteniendo en el [ServiceContract(Namespace =http://Maquina/Ruta ...)]

No modifica el fichero WSDL ya que sigue haciendo referencia a lo que según me indican es incorrecto...
1
2
3
4
<wsdl:definitions ...... targetNamespace=http://Maquina/Ruta ...>
<wsdl:types> <xs:schema ... targetNamespace=http://Maquina/Ruta ...> 
<wsdl:operation... wsaw:Action=http://Maquina/Ruta ...>
<wsdl:binding ... <soap:operation soapAction=http://Maquina/Ruta ...>

De igual forma mantiene lo que según mi cliente está bien:
1
<wsdl:service ... <wsdl:port ... <soap:address location=http://Maquina/Ruta ...>

Gracias de nuevo. Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con WSDL WCF C#

Publicado por David (8 intervenciones) el 01/10/2015 23:43:47
En tu web.config te sobra indicar fichero.svc;solo hay que poner la ruta:
1
2
3
4
5
<client>
      <endpoint address="/CARPETA_IIS"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IIDLogisticsOrders"
        contract="ServiceReference1.IIDLogisticsOrders" name="BasicHttpBinding_IIDLogisticsOrders" />
</client>

Y referente al WSDL, tal y como te puse antes, es irrelevante el namespace que sale, pero sí no quieres que salga, quita la línea [ServiceContract(Namespace =http://Maquina/Ruta ...)] del código. El namespace es un concepto de xml. Sirve para aislar partes de un XML. No afecta al funcionamiento, independientemente de donde esté instalado.
Pero como te digo, si a tu cliente le molesta, quítalo para que no salga y ya está.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con WSDL WCF C#

Publicado por Veronica (8 intervenciones) el 08/10/2015 17:57:17
Buenas tardes,

Finalmente he tenido que modificar la ruta del targetNameSpace para poder desvincularlo de la máquina y tener rutas relativas.

Gracias por la ayuda.

Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar