Freigeben über


IInteractiveChannelInitializer Schnittstelle

Definition

Definiert die Methoden, mit denen eine Clientanwendung eine Benutzeroberfläche zum Sammeln von Identitätsinformationen vor dem Erstellen des Kanals anzeigen kann.

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

Hinweise

Implementieren Sie die IInteractiveChannelInitializer Schnittstelle, um einer Clientanwendung die Anzeige einer Benutzeroberfläche zu ermöglichen, mit der der Benutzer der Anwendung die Anmeldeinformationen vor dem Öffnen eines Kanals erstellen oder auswählen kann.

Führen Sie zum Implementieren IInteractiveChannelInitializerdie folgenden Schritte aus:IInteractiveChannelInitializer.BeginDisplayInitializationUI

  1. Fordern Sie den Benutzer auf, und erhalten Sie eine entsprechende System.Net.NetworkCredential.

  2. Fügen Sie der Auflistung ein benutzerdefiniertes Kanalparameterobjekt hinzu, das von der IChannel.GetProperty Methode für das IClientChannel Objekt mit einem Typparameter zurückgegeben System.ServiceModel.Channels.ChannelParameterCollectionwird. Dieses Kanalparameterobjekt wird vom benutzerdefinierten System.ServiceModel.ClientCredentialsSecurityTokenManager Verwendet, um die Sicherheitstoken für den Kanal einzurichten.

  3. Rückgabe.

So fügen Sie folgendes ein IInteractiveChannelInitializer:

  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 Und wenn dies der Vorgang erforderlich ist, fügen Sie die IInteractiveChannelInitializerClientRuntime.InteractiveChannelInitializers Auflistung hinzu.

Es gibt zwei Möglichkeiten, wie Anwendungsentwickler ein eingefügtes IInteractiveChannelInitializerverwenden können. Die Clientanwendung kann entweder ClientBase<TChannel>.DisplayInitializationUI oder IClientChannel.DisplayInitializationUI (oder eine asynchrone Version) vor dem Öffnen des Kanals (dem expliziten Ansatz) aufrufen 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> oder IClientChannel eine Erweiterung aufrufen. Wenn ein anderes Element als der erste Vorgang aufgerufen wird, wird eine Ausnahme ausgelöst.

Wenn Sie den expliziten Ansatz verwenden, muss die Anwendung die folgenden Schritte ausführen:

  1. Rufen Sie entweder 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. Anrufvorgänge.

Es wird empfohlen, dass Produktionsqualitätsanwendungen den Prozess der Benutzeroberfläche kontrollieren, indem sie den expliziten Ansatz übernehmen.

Anwendungen, die den impliziten Ansatz verwenden, rufen die Initialisierer der Benutzeroberfläche auf, aber wenn der Benutzer der Anwendung nicht innerhalb des Send-Timeout-Zeitraums der Bindung reagiert, wird eine Ausnahme ausgelöst, wenn die Benutzeroberfläche zurückkehrt.

Methoden

Name Beschreibung
BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object)

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

EndDisplayInitializationUI(IAsyncResult)

Wird aufgerufen, wenn der BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object) Vorgang abgeschlossen ist.

Gilt für: