IInteractiveChannelInitializer 接口

定义

定义方法,客户端应用程序可以使用这些方法来显示用户界面,以便在创建通道前收集标识信息。

public interface class IInteractiveChannelInitializer
public interface IInteractiveChannelInitializer
type IInteractiveChannelInitializer = interface
Public Interface IInteractiveChannelInitializer
派生

注解

实现 IInteractiveChannelInitializer 接口可以使客户端应用程序显示用户界面,应用程序的用户可以在打开通道前创建或选择凭据。

若要实现 IInteractiveChannelInitializer,请在 IInteractiveChannelInitializer.BeginDisplayInitializationUI 中执行下面的步骤:

  1. 提示用户,然后获取适当的 System.Net.NetworkCredential

  2. 将自定义通道参数对象添加到具有 IChannel.GetProperty 类型参数的 IClientChannel 对象上的 System.ServiceModel.Channels.ChannelParameterCollection 方法返回的集合。 自定义 System.ServiceModel.ClientCredentialsSecurityTokenManager 使用此通道参数对象来建立通道的安全标记。

  3. 返回。

插入 IInteractiveChannelInitializer

  1. 重写 IEndpointBehavior.ApplyClientBehavior 类上的 System.ServiceModel.Description.ClientCredentials 方法。

  2. 在该方法中,确定终结点是否需要 IInteractiveChannelInitializer,如果需要,请将 IInteractiveChannelInitializer 添加到 ClientRuntime.InteractiveChannelInitializers 集合。

应用程序开发人员有两种方法来利用插入的 IInteractiveChannelInitializer。 客户端应用程序可以在打开 (显式方法) (通道之前调用ClientBase<TChannel>.DisplayInitializationUIIClientChannel.DisplayInitializationUI (或异步版本) ,或者只需 (隐式方法) 调用第一个操作。

如果使用隐式方法,应用程序必须调用 ClientBase<TChannel>IClientChannel 扩展上的第一个操作。 如果它调用除第一个操作以外的任何操作,则将引发异常。

如果使用显式方法,应用程序必须按顺序执行下面的操作:

  1. 调用 ClientBase<TChannel>.DisplayInitializationUIIClientChannel.DisplayInitializationUI(或异步版本)。

  2. 当初始值设定项已返回时,针对 Open 对象或从 IClientChannel 属性返回的 IClientChannel 对象来调用 ClientBase<TChannel>.InnerChannel 方法。

  3. 调用操作。

建议通过采取显式方法由可投入实际生产运行的应用程序来控制用户界面进程。

使用隐式方法的应用程序调用用户界面初始值设定项,但是如果应用程序的用户没有在绑定的发送超时期限内做出响应,则当用户界面返回时,将引发异常。

方法

BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object)

要开始使用用户接口获取凭据信息的异步调用。

EndDisplayInitializationUI(IAsyncResult)

BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object) 已完成时调用。

适用于