CustomBinding Класс

Определение

Определяет привязку из списка элементов привязки.

public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
    inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
    inherit Binding
Public Class CustomBinding
Inherits Binding
Наследование
CustomBinding
Атрибуты

Примеры

В следующем примере показано создание объекта CustomBinding с использованием элементов привязки ReliableSessionBindingElement и HttpTransportBindingElement.

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    // Create a custom binding that contains two binding elements.
    ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
    reliableSession.Ordered = true;

    HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
    httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
    httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;

    CustomBinding binding = new CustomBinding(reliableSession, httpTransport);

    // Add an endpoint using that binding.
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");

    // Add a MEX endpoint.
    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
    smb.HttpGetEnabled = true;
    smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
    serviceHost.Description.Behaviors.Add(smb);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();

    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")

' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
    ' Create a custom binding that contains two binding elements.
    Dim reliableSession As New ReliableSessionBindingElement()
    reliableSession.Ordered = True

    Dim httpTransport As New HttpTransportBindingElement()
    httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
    httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard

    Dim binding As New CustomBinding(reliableSession, httpTransport)

    ' Add an endpoint using that binding.
    serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")

    ' Add a MEX endpoint.
    Dim smb As New ServiceMetadataBehavior()
    smb.HttpGetEnabled = True
    smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
    serviceHost.Description.Behaviors.Add(smb)

    ' Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open()

    ' The service can now be accessed.
    Console.WriteLine("The service is ready.")
    Console.WriteLine("Press <ENTER> to terminate service.")
    Console.WriteLine()
    Console.ReadLine()

    ' Close the ServiceHostBase to shutdown the service.
    serviceHost.Close()
End Using

Комментарии

Используйте пользовательские привязки в случае, когда ни одна из системных привязок не соответствует требованиям службы. Так, с помощью пользовательской привязки можно разрешить использование нового транспорта или нового кодировщика в конечной точке службы.

Пользовательская привязка создается с использованием одного из CustomBinding из коллекции элементов привязки, которые располагаются в определенном порядке.

В следующей таблице приведены сводные данные по параметрам каждого уровня.

Уровень Параметры Обязательно
Поток транзакций TransactionFlowBindingElement Нет
Надежность ReliableSessionBindingElement Нет
Безопасность Симметричный, асимметричный, транспортного уровня Нет
Изменение формы CompositeDuplexBindingElement Нет
Обновления транспорта Поток SSL, поток Windows, распознаватель одноранговых узлов Нет
Кодирование Текстовая, двоичная, MTOM, пользовательская Да
Транспорт TCP, именованные каналы, HTTP, HTTPS, разновидности MSMQ, пользовательский Да

Кроме того, можно определить собственные элементы привязки и вставить их между любыми из приведенных выше заданных уровней.

Обсуждение использования пользовательской привязки для изменения привязки, предоставляемой системой, см. в разделе Практическое руководство. Настройка привязки System-Provided.

Примечание

При вызове службы WCF, созданной с платформа .NET Framework 4.0 или более поздней версии, из клиентского приложения WCF, созданного с помощью платформа .NET Framework 3.5 или более ранней версии, файл конфигурации, созданный svcutil.exe или добавлением ссылки на службу из Visual Studio, будет содержать атрибут допустимости в конфигурации привязки. Этот атрибут не распознается средой выполнения платформа .NET Framework 3.5, и приложение создаст ConfigurationErrorsException исключение с сообщением "Нераспознанное допустимость атрибута". Чтобы обойти эту проблему, удалите атрибут допустимости из конфигурации привязки.

Конструкторы

CustomBinding()

Инициализирует новый экземпляр класса CustomBinding.

CustomBinding(Binding)

Инициализирует новый экземпляр класса CustomBinding на основе значений заданной привязки.

CustomBinding(BindingElement[])

Инициализирует новый экземпляр класса CustomBinding из массива элементов привязки.

CustomBinding(IEnumerable<BindingElement>)

Инициализирует новый экземпляр класса CustomBinding с помощью элементов привязки из заполненного стека каналов.

CustomBinding(String)

Инициализирует новый экземпляр класса CustomBinding.

CustomBinding(String, String, BindingElement[])

Инициализирует новый экземпляр класса CustomBinding из массива элементов привязки с заданными именем и пространством имен.

Свойства

CloseTimeout

Возвращает или задает интервал времени для закрытия подключения до того, как транспорт создаст исключение.

(Унаследовано от Binding)
Elements

Возвращает элементы привязки из пользовательской привязки.

MessageVersion

Возвращает версию сообщения, используемую клиентами и службами, настроенными с использованием привязки.

(Унаследовано от Binding)
Name

Возвращает или задает имя привязки.

(Унаследовано от Binding)
Namespace

Возвращает или задает пространство имен XML привязки.

(Унаследовано от Binding)
OpenTimeout

Возвращает или задает интервал времени для открытия подключения до того, как транспорт создаст исключение.

(Унаследовано от Binding)
ReceiveTimeout

Возвращает или задает интервал времени бездействия подключения, в течение которого сообщения приложения не получаются, до его сброса.

(Унаследовано от Binding)
Scheme

Возвращает схему универсального кода ресурса (URI) для транспорта, используемого пользовательской привязкой.

SendTimeout

Возвращает или задает интервал времени для завершения операции записи до того, как транспорт создаст исключение.

(Унаследовано от Binding)

Методы

BuildChannelFactory<TChannel>(BindingParameterCollection)

Выполняет построение на клиенте стека фабрики каналов, создающего каналы заданного типа и удовлетворяющего заданным коллекцией привязки параметрам.

(Унаследовано от Binding)
BuildChannelFactory<TChannel>(Object[])

Выполняет построение на клиенте стека фабрики каналов, создающего каналы заданного типа и удовлетворяющего заданным массивом объектов параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(BindingParameterCollection)

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным коллекцией привязки параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(Object[])

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(Uri, Object[])

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным параметрам.

(Унаследовано от Binding)
BuildChannelListener<TChannel>(Uri, String, Object[])

Выполняет построение на стороне службы прослушивателя каналов, принимающего каналы заданного типа и удовлетворяющего заданным параметрам.

(Унаследовано от Binding)
CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Возвращает значение, указывающее, может ли текущая привязка выполнить построение на клиенте стека фабрики каналов, удовлетворяющего заданной коллекции параметров привязки.

(Унаследовано от Binding)
CanBuildChannelFactory<TChannel>(Object[])

Возвращает значение, указывающее, может ли текущая привязка выполнить построение на клиенте стека фабрики каналов, удовлетворяющего заданным массивом объектов требованиям.

(Унаследовано от Binding)
CanBuildChannelListener<TChannel>(BindingParameterCollection)

Возвращает значение, указывающее, может ли текущая привязка выполнить построение на стороне службы стека прослушивателя каналов, удовлетворяющего заданной коллекции параметров привязки.

(Унаследовано от Binding)
CanBuildChannelListener<TChannel>(Object[])

Возвращает значение, указывающее, может ли текущая привязка выполнить построение на стороне службы стека прослушивателя каналов, удовлетворяющего заданным в массиве объектов критериям.

(Унаследовано от Binding)
CreateBindingElements()

Возвращает универсальную коллекцию элементов привязки из пользовательской привязки.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetProperty<T>(BindingParameterCollection)

Возвращает запрошенный типизированный объект, если он имеется, из соответствующего уровня стека привязок.

(Унаследовано от Binding)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ShouldSerializeName()

Возвращает значение, которое указывает, должно ли быть сериализовано имя привязки.

(Унаследовано от Binding)
ShouldSerializeNamespace()

Возвращает значение, которое указывает, должно ли быть сериализовано пространство имен привязки.

(Унаследовано от Binding)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к