IInteractiveChannelInitializer Schnittstelle

Definition

Definiert die Methoden, die es einer Clientanwendung ermöglichen, eine Benutzeroberfläche anzuzeigen, um Identitätsinformationen vor dem Erstellen des Kanals zu erfassen.

public interface class IInteractiveChannelInitializer
public interface IInteractiveChannelInitializer
type IInteractiveChannelInitializer = interface
Public Interface IInteractiveChannelInitializer
Abgeleitet

Hinweise

Implementieren Sie die IInteractiveChannelInitializer-Schnittstelle, mit der eine Clientanwendung eine Benutzeroberfläche anzeigen kann, die es dem Benutzer der Anwendung gestattet, vor dem Öffnen eines Kanals Anmeldeinformationen zu erstellen oder auszuwählen.

Zur Implementierung von IInteractiveChannelInitializer führen Sie die folgenden Schritte in IInteractiveChannelInitializer.BeginDisplayInitializationUI aus:

  1. Fordern Sie den Benutzer zur Eingabe auf, um geeignete System.Net.NetworkCredential zu erhalten.

  2. Fügen Sie ein Parameterobjekt für einen benutzerdefinierten Kanal zur Auflistung hinzu, die durch die IChannel.GetProperty-Methode vom IClientChannel-Objekt mit einem Typparameter aus System.ServiceModel.Channels.ChannelParameterCollectionzurückgegeben wird. Dieses Kanalparameterobjekt wird vom benutzerdefinierten System.ServiceModel.ClientCredentialsSecurityTokenManager zur Einrichtung der Sicherheitstoken für den Kanal verwendet.

  3. Kehren Sie zurück.

So fügen Sie den IInteractiveChannelInitializer ein:

  1. Überschreiben Sie die IEndpointBehavior.ApplyClientBehavior-Methode für die System.ServiceModel.Description.ClientCredentials-Klasse.

  2. Ermitteln Sie in dieser Methode, ob für den Endpunkt ein IInteractiveChannelInitializer erforderlich ist. Wenn dies der Fall ist, fügen Sie den IInteractiveChannelInitializer der ClientRuntime.InteractiveChannelInitializers-Auflistung hinzu.

Es gibt zwei Methoden, wie Anwendungsentwickler einen eingefügten IInteractiveChannelInitializer nutzen können. Die Clientanwendung kann entweder ClientBase<TChannel>.DisplayInitializationUI oder IClientChannel.DisplayInitializationUI (oder eine asynchrone Version) vor dem Öffnen des Kanals aufrufen (der explizite Ansatz) oder einfach den ersten Vorgang (den impliziten Ansatz) aufrufen.

Bei Verwendung des impliziten Ansatzes muss die Anwendung den ersten Vorgang für eine ClientBase<TChannel>-Erweiterung oder eine IClientChannel-Erweiterung aufrufen. Wenn ein anderes Element als der erste Vorgang aufgerufen wird, wird eine Ausnahme ausgelöst.

Bei Verwendung des expliziten Ansatzes müssen durch die Anwendung die folgenden Schritte in dieser Reihenfolge ausgeführt werden:

  1. Rufen Sie ClientBase<TChannel>.DisplayInitializationUI oder IClientChannel.DisplayInitializationUI (oder eine asynchrone Version) auf.

  2. Wenn die Initialisierer zurückgegeben wurden, rufen Sie entweder die Open-Methode für das IClientChannel-Objekt oder für das IClientChannel-Objekt auf, das durch die ClientBase<TChannel>.InnerChannel-Eigenschaft zurückgegeben wird.

  3. Aufrufen von Vorgängen.

Es wird empfohlen, dass Anwendungen mit Produktionsqualität den Prozess der Benutzeroberfläche mithilfe des expliziten Ansatzes steuern.

Anwendungen, die den impliziten Ansatz verwenden, rufen die Initialisierer der Benutzeroberfläche auf, aber wenn der Benutzer nicht innerhalb des Sendetimeouts der Bindung antwortet, wird bei Zurückgeben der Benutzeroberfläche eine Ausnahme ausgelöst.

Methoden

BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object)

Ein asynchroner Aufruf, um mit der Verwendung einer Benutzeroberfläche zur Abfrage der Anmeldeinformationen zu beginnen.

EndDisplayInitializationUI(IAsyncResult)

Wird aufgerufen, wenn BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object) beendet wurde.

Gilt für: