IInteractiveChannelInitializer Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет методы, позволяющие приложению клиента отображать пользовательский интерфейс, чтобы собирать данные идентификации до создания канала.
public interface class IInteractiveChannelInitializer
public interface IInteractiveChannelInitializer
type IInteractiveChannelInitializer = interface
Public Interface IInteractiveChannelInitializer
- Производный
Комментарии
Реализуйте интерфейс IInteractiveChannelInitializer, чтобы разрешить приложению клиента отображать пользовательский интерфейс, что позволяет пользователю приложения создавать или выбирать учетные данные до открытия канала.
Чтобы применить экземпляр IInteractiveChannelInitializer, выполните следующие шаги в IInteractiveChannelInitializer.BeginDisplayInitializationUI:
Запросите пользователя и получите соответствующие System.Net.NetworkCredential.
Добавьте настраиваемый объект параметра канала в коллекцию, возвращаемую методом IChannel.GetProperty в объекте IClientChannel с параметром типа System.ServiceModel.Channels.ChannelParameterCollection. Этот объект параметра канала используется настраиваемым средством System.ServiceModel.ClientCredentialsSecurityTokenManager для установки маркеров безопасности для канала.
Возврат.
Для вставки IInteractiveChannelInitializer:
Переопределите метод IEndpointBehavior.ApplyClientBehavior в классе System.ServiceModel.Description.ClientCredentials.
В этом методе определите, требует ли конечная точка объект IInteractiveChannelInitializer, и если это так, то добавьте объект IInteractiveChannelInitializer в коллекцию ClientRuntime.InteractiveChannelInitializers.
Существует два пути использования вставленного объекта IInteractiveChannelInitializer разработчиками приложений. Клиентское приложение может вызвать либо ClientBase<TChannel>.DisplayInitializationUI или IClientChannel.DisplayInitializationUI (или асинхронную версию) перед открытием канала ( явный подход) или просто вызвать первую операцию ( неявный подход).
Если использовать неявный подход, то приложение должно вызвать первую операцию в расширении ClientBase<TChannel> или IClientChannel. Если приложение вызовет что-либо другое вместо первой операции, будет создано исключение.
Если использовать явный подход, то приложение должно выполнить следующие шаги по порядку:
Вызывать либо ClientBase<TChannel>.DisplayInitializationUI, либо IClientChannel.DisplayInitializationUI (или асинхронную версию).
После возвращения инициализаторов вызвать либо метод Open в объекте IClientChannel, либо в объекте IClientChannel, возвращенном из свойства ClientBase<TChannel>.InnerChannel.
Вызовите операции.
Рекомендуется, чтобы приложения качества работы управляли процессом взаимодействия пользователя с интерфейсом путем адаптации явного подхода.
Приложения, использующие неявный подход, вызывают инициализаторы интерфейса пользователя, но если пользователь приложения не сможет ответить в отведенный период времени привязки для отправки, то при возвращении пользовательского интерфейса создается исключение.
Методы
BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object) |
Асинхронный вызов для начала использования пользовательского интерфейса для получения учетных данных. |
EndDisplayInitializationUI(IAsyncResult) |
Вызывается при завершении свойства BeginDisplayInitializationUI(IClientChannel, AsyncCallback, Object). |