Pregunta

Tengo un problema de versiones con un contrato de servicio de WCF en el que uno de los muchos puntos finales que reciben el nombre de la operación no se encuentra un método del contrato.

Mi pregunta es, ¿cómo puedo hacer que el comando está disponible en el cliente antes de intentar llamarle?

Me trató:

  foreach (var od in proxy.Endpoint.Contract.Operations)
  {
    if (od.Name == "MyMethodName")
    {
      hasMethod = true;
      break;
    }
  }

Por desgracia, esto es mediante el contrato de la aplicación de llamadas y en realidad no describe las implementaciones en el propio punto final. Como resultado, devuelve cierto a pesar de que el punto final ha fallado en implementar el comando.

¿Fue útil?

Solución

Usted nunca sabe realmente hasta que probarlo. Lo que tenemos es un proxy del contrato ejecutado, pero lo que está en el lado del servidor podría haber cambiado desde que creó / generó.

Si se asume que es una aplicación http / httpws supongo que se podría llamar y comprobar la referencia de servicio y descargue el archivo WSDL. Que le dirá qué métodos, etc son compatibles. El problema que va a tener es que a pesar de que el nombre del método tal vez el mismo, también tendrá que comprobar el tipo de retorno y parámetros para estar realmente seguro de que es el mismo método y que se le puede llamar con el proxy que tiene actualmente.

Aquí hay un enlace en versiones en WCF:
http://msdn.microsoft.com/en-us/library/ms731060. aspx

Aquí hay un enlace en versiones de las mejores prácticas para WCF:
Mejores prácticas para versionar sus servicios con WCF?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top