Bei einer Aktualisierung eines Dienstverweises wird die Einstellung der EndpointConfigurationName-Eigenschaft in den Aktivitäten in einer Windows Workflow Foundation 4.0-Anwendung nicht aktualisiert.

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem Änderungen an einem Dienstverweis die EndpointConfigurationName Eigenschafteneinstellung in den Aktivitäten einer Windows Workflow Foundation 4.0-Anwendung nicht aktualisieren.

Ursprüngliche Produktversion:   Windows Workflow Foundation 4.0
Ursprüngliche KB-Nummer:   2015763

Problembeschreibung

Betrachten Sie das folgende Szenario in Microsoft Visual Studio 2010:

  • Sie verfügen über ein Windows Workflow Foundation 4.0-Projekt, das das Feature "Dienstverweis hinzufügen" verwendet, um Dienste zu nutzen.
  • Sie haben einige generierte Aktivitäten verworfen, um sie als Teil der Workflowanwendung hinzuzufügen. Der Endpunktname wird im referenzierten Dienst geändert. In diesem Fall verwenden Sie das Updatedienst-Referenzfeature, um den Clientproxy und die Konfigurationsdatei zu aktualisieren.

In diesem Szenario werden die EndpointConfigurationName Eigenschaften in den Aktivitäten, die dem Workflow hinzugefügt werden, nicht aktualisiert. Wenn Sie versuchen, das Projekt zu erstellen, wird das Projekt mit dem Vorgang "Projektmappe erstellen" erfolgreich erstellt. Benutzer erhalten jedoch zur Laufzeit die folgende Ausnahme:

Endpunktelement mit Dem Namen "BindingType_ServiceContractName" und Vertrag "ServiceContractName" im Abschnitt "ServiceModel-Clientkonfiguration" konnte nicht gefunden werden. Dies liegt möglicherweise daran, dass keine Konfigurationsdatei für Ihre Anwendung gefunden wurde oder weil im Clientelement kein Endpunktelement gefunden werden konnte, das diesem Namen entspricht.

Ursache

Dieses Problem tritt auf, weil der Endpunktname mithilfe einer der folgenden beiden Methoden geändert wird:

  • Sie haben den Endpunktnamen in der Dienstkonfigurationsdatei explizit geändert.
  • Sie haben den Endpunktnamen nicht in der Dienstkonfigurationsdatei angegeben.

Standardmäßig wird auf EndpointConfigurationName clientseitiger Seite BindingType_ServiceContractName generiert. Wenn Sie den Bindungstyp oder den Dienstvertragsnamen ändern, wird der Standardendpunktname entsprechend aktualisiert.

Lösung

Um dieses Problem zu umgehen, aktualisieren Sie die EndpointConfigurationName Eigenschaft für jede vorhandene Aktivität manuell. Verwenden Sie dabei denselben Wert wie der Endpunktname in der App.config-Datei auf dem Client.

Bewährte Methode

Um die Wahrscheinlichkeit zu verringern, dass dieses Problem auftritt, geben Sie den Endpunktnamen in der Dienstkonfigurationsdatei an, anstatt den Standardnamen zu verwenden. Wenn Sie dies tun, wird der Endpunktname auf clientseitiger Seite entsprechend angegeben und nicht geändert, wenn ein Servicevertrag oder ein Bindungstyp aktualisiert wird.

Hinweis

  • Dies wird als bewährte Methode empfohlen.
  • Sie können diese Vorgehensweise nur implementieren, wenn Sie der Besitzer des referenzierten Diensts sind.