Vollständig und teilweise gebundene Handles
Wenn Sie dynamische Endpunkte verwenden, erhalten die Laufzeitbibliotheken Endpunktinformationen nach Bedarf. Die Laufzeitbibliotheken unterscheiden zwischen einem vollständig gebundenen Handle (eines, das Endpunktinformationen enthält) und einem teilweise gebundenen Handle (eines, das keine Endpunktinformationen enthält).
Die Clientlaufzeitbibliothek muss das teilweise gebundene Handle in ein vollständig gebundenes Handle konvertieren, bevor der Client eine Bindung an den Server herstellen kann. Die Clientlaufzeitbibliothek versucht, das teilweise gebundene Handle für die Clientanwendung zu konvertieren, indem die Endpunktinformationen wie gezeigt abgerufen werden:
- Aus der Schnittstellenspezifikation des Clients
- Von einem Endpunktzuordnungsdienst, der auf dem Server ausgeführt wird
Wenn der Client versucht, ein teilweise gebundenes Handle zu verwenden, wenn die Endpunktinformationen in der Schnittstellenspezifikation nicht verfügbar sind und die Endpunktzuordnung des Servers keine Informationen über den Serverendpunkt enthält, verfügt der Client nicht über genügend Informationen, um seinen Remoteprozeduraufruf zu tätigen, und dieser Aufruf schlägt fehl. Um dies zu verhindern, müssen Sie den Endpunkt in der Endpunktzuordnung registrieren, wenn Ihre verteilte Anwendung teilweise gebundene Handles verwendet. Weitere Informationen zur Endpunktzuordnung finden Sie unter Angeben dynamischer Endpunkte.
Wenn ein Remoteprozeduraufruf fehlschlägt, kann die Clientanwendung RpcBindingReset aufrufen, um veraltete Endpunktinformationen zu entfernen. Wenn der Client versucht, die Remoteprozedur aufzurufen, versucht die Clientlaufzeitbibliothek erneut, das vollständig gebundene Handle in ein teilweise gebundenes Handle zu konvertieren. Dies ist nützlich, wenn der Server mit einem anderen dynamischen Endpunkt beendet und neu gestartet wurde.