SslApplicationProtocol Структура
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет значение протокола приложения TLS.
public value class SslApplicationProtocol : IEquatable<System::Net::Security::SslApplicationProtocol>
public readonly struct SslApplicationProtocol : IEquatable<System.Net.Security.SslApplicationProtocol>
type SslApplicationProtocol = struct
Public Structure SslApplicationProtocol
Implements IEquatable(Of SslApplicationProtocol)
- Наследование
- Реализации
Примеры
В следующем примере кода демонстрируется согласование протокола уровня приложения в SslStream. Сервер объявляет поддержку protocol1
и protocol2
. Клиент объявляет поддержку protocol2
и protocol3
. Часто поддерживаемый протокол (protocol2
) согласовывается во время подтверждения.
async Task Server(NetworkStream stream, X509Certificate2 serverCertificate)
{
using var server = new SslStream(stream);
await server.AuthenticateAsServerAsync(new SslServerAuthenticationOptions
{
ServerCertificate = serverCertificate,
ApplicationProtocols = new()
{
new("protocol1"),
new("protocol2"),
}
});
string protocol = Encoding.ASCII.GetString(server.NegotiatedApplicationProtocol.Protocol.Span);
System.Console.WriteLine($"Server - negotiated protocol: {protocol}");
}
async Task Client(NetworkStream stream, string hostName)
{
using var client = new SslStream(stream);
await client.AuthenticateAsClientAsync(new SslClientAuthenticationOptions
{
// the host name must match the name on the certificate used on the server side
TargetHost = hostName,
ApplicationProtocols = new()
{
new("protocol2"),
new("protocol3")
}
});
string protocol = Encoding.ASCII.GetString(client.NegotiatedApplicationProtocol.Protocol.Span);
System.Console.WriteLine($"Client - negotiated protocol: {protocol}");
}
// possible output:
// Server - negotiated protocol: protocol2
// Client - negotiated protocol: protocol2
Async Function Server(stream As NetworkStream, serverCertificate As X509Certificate2) As Task
Using serverStream As SslStream = new SslStream(stream)
Dim options as New SslServerAuthenticationOptions() With
{
.ServerCertificate = serverCertificate,
.ApplicationProtocols = New List(Of SslApplicationProtocol) From
{
New SslApplicationProtocol("protocol1"),
New SslApplicationProtocol("protocol2")
}
}
Await serverStream.AuthenticateAsServerAsync(options)
Dim protocol As String = Encoding.ASCII.GetString(
serverStream.NegotiatedApplicationProtocol.Protocol.Span)
System.Console.WriteLine($"Server - negotiated protocol: {protocol}")
End Using
End Function
Async Function Client(stream As NetworkStream, hostName As String ) As Task
Using clientStream As SslStream = new SslStream(stream)
Dim options as New SslClientAuthenticationOptions() With
{
.TargetHost = hostName,
.ApplicationProtocols = New List(Of SslApplicationProtocol) From
{
New SslApplicationProtocol("protocol2"),
New SslApplicationProtocol("protocol3")
}
}
Await clientStream.AuthenticateAsClientAsync(options)
Dim protocol As String = Encoding.ASCII.GetString(
clientStream.NegotiatedApplicationProtocol.Protocol.Span)
System.Console.WriteLine($"Client - negotiated protocol: {protocol}")
End Using
End Function
' possible output:
' Server - negotiated protocol: protocol2
' Client - negotiated protocol: protocol2
Комментарии
Этот тип содержит статические поля с предопределенными SslApplicationProtocol значениями для версий HTTP.
Во время подтверждения клиент отправляет список доступных протоколов ALPN, и сервер выбирает наиболее подходящее из этого списка.
Полный список поддерживаемых протоколов см. в разделе Идентификаторы протоколов TLS Application-Layer протоколов (ALPN).
Конструкторы
SslApplicationProtocol(Byte[]) |
Инициализирует новый экземпляр класса SslApplicationProtocol. |
SslApplicationProtocol(String) |
Инициализирует новый экземпляр класса SslApplicationProtocol. |
Поля
Http11 |
Возвращает объект SslApplicationProtocol, представляющий протокол приложения HTTP/1.1 TLS. |
Http2 |
Возвращает объект SslApplicationProtocol, представляющий протокол приложения HTTP/2 TLS. |
Http3 |
Определяет SslApplicationProtocol экземпляр для HTTP 3.0. |
Свойства
Protocol |
Возвращает текущий протокол приложения TLS, представленный этим объектом SslApplicationProtocol. |
Методы
Equals(Object) |
Сравнивает SslApplicationProtocol с указанным объектом. |
Equals(SslApplicationProtocol) |
Сравнивает объект SslApplicationProtocol с заданным экземпляром класса SslApplicationProtocol. |
GetHashCode() |
Возвращает хэш-код экземпляра класса SslApplicationProtocol. |
ToString() |
Переопределяет метод ToString(). |
Операторы
Equality(SslApplicationProtocol, SslApplicationProtocol) |
Оператор равенства для сравнения двух объектов SslApplicationProtocol. |
Inequality(SslApplicationProtocol, SslApplicationProtocol) |
Оператор неравенства для сравнения двух объектов SslApplicationProtocol. |