SslApplicationProtocol Estructura
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un valor del protocolo de aplicación 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)
- Herencia
- Implementaciones
Ejemplos
En el ejemplo de código siguiente se muestra la negociación del protocolo de nivel de aplicación en SslStream. El servidor anuncia la compatibilidad con protocol1
y protocol2
. El cliente anuncia la compatibilidad con protocol2
y protocol3
. El protocolo admitido normalmente (protocol2
) se negocia durante el protocolo de enlace.
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
Comentarios
Este tipo contiene campos estáticos con valores predefinidos SslApplicationProtocol para las versiones HTTP.
Durante el protocolo de enlace, el cliente envía una lista de protocolos ALPN disponibles y el servidor elige la mejor coincidencia de esa lista.
Para obtener una lista completa de los protocolos admitidos, consulte Identificadores de protocolo de negociación de protocolos (ALPN) de TLS Application-Layer.
Constructores
SslApplicationProtocol(Byte[]) |
Inicializa una nueva instancia de SslApplicationProtocol. |
SslApplicationProtocol(String) |
Inicializa una nueva instancia de SslApplicationProtocol. |
Campos
Http11 |
Obtiene un objeto SslApplicationProtocol que representa el protocolo de aplicación TLS HTTP/1.1. |
Http2 |
Obtiene un objeto SslApplicationProtocol que representa el protocolo de aplicación TLS HTTP/2. |
Http3 |
Define una SslApplicationProtocol instancia para HTTP 3.0. |
Propiedades
Protocol |
Obtiene un protocolo de aplicación TLS actual representado por este objeto SslApplicationProtocol. |
Métodos
Equals(Object) |
Compara la colección SslApplicationProtocol con el objeto especificado. |
Equals(SslApplicationProtocol) |
Compara SslApplicationProtocol con la instancia de SslApplicationProtocol especificada. |
GetHashCode() |
Devuelve el código hash de la instancia de SslApplicationProtocol. |
ToString() |
Reemplaza el método ToString(). |
Operadores
Equality(SslApplicationProtocol, SslApplicationProtocol) |
El operador de igualdad para comparar dos objetos SslApplicationProtocol. |
Inequality(SslApplicationProtocol, SslApplicationProtocol) |
Operador de desigualdad para comparar dos objetos SslApplicationProtocol. |