Una actualización de una referencia de servicio no actualiza la configuración de la propiedad EndpointConfigurationName en las actividades de una aplicación Windows Workflow Foundation 4.0

Este artículo le ayuda a resolver el problema en el que los cambios en una referencia de servicio no actualizan la configuración de la propiedad en las actividades de una aplicación Windows EndpointConfigurationName Workflow Foundation 4.0.

Versión del producto original:   Windows Workflow Foundation 4.0
Número KB original:   2015763

Síntomas

Tenga en cuenta el siguiente escenario Microsoft Visual Studio 2010:

  • Tiene un proyecto Windows Workflow Foundation 4.0 que usa la característica Agregar referencia de servicio para consumir servicios.
  • Se descartaron algunas actividades generadas para agregarlas como parte de la aplicación de flujo de trabajo. El nombre del extremo se cambia en el servicio al que se hace referencia. Cuando esto ocurre, se usa la característica Actualizar referencia de servicio para actualizar el proxy de cliente y el archivo de configuración.

En este escenario, las propiedades de las actividades que se agregan al flujo de EndpointConfigurationName trabajo no se actualizan. Si intenta compilar el proyecto, la operación De solución de compilación compila correctamente el proyecto. Sin embargo, los usuarios reciben la siguiente excepción en tiempo de ejecución:

No se pudo encontrar el elemento de extremo con el nombre 'BindingType_ServiceContractName' y el contrato 'ServiceContractName' en la sección de configuración del cliente ServiceModel. Esto puede deberse a que no se encontró ningún archivo de configuración para la aplicación o porque no se encontró ningún elemento de extremo que coincida con este nombre en el elemento cliente.

Causa

Este problema se produce porque el nombre del extremo se cambia mediante uno de los dos métodos siguientes:

  • Ha cambiado explícitamente el nombre del extremo en el archivo de configuración del servicio.
  • No especificó el nombre del extremo en el archivo de configuración del servicio.

De forma predeterminada, EndpointConfigurationName el que se genera en el lado cliente es BindingType_ServiceContractName. Al cambiar el tipo de enlace o el nombre del contrato de servicio, el nombre del extremo predeterminado se actualiza en consecuencia.

Solución

Para evitar este problema, actualice manualmente la EndpointConfigurationName propiedad de cada actividad existente. Al hacerlo, use el mismo valor que el nombre del extremo en el App.config del cliente.

Procedimiento recomendado

Para reducir la posibilidad de que se encuentre este problema, especifique el nombre del extremo en el archivo de configuración del servicio en lugar de usar el nombre predeterminado. Si lo hace, el nombre del extremo en el lado cliente se especifica en consecuencia y no se cambia cuando se actualiza un contrato de servicio o un tipo de enlace.

Nota

  • Esto se recomienda como procedimiento recomendado.
  • Solo puede implementar esta práctica si es propietario del servicio al que se hace referencia.