SslApplicationProtocol Structure
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente une valeur du protocole d’application 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)
- Héritage
- Implémente
Exemples
L’exemple de code suivant illustre la négociation du protocole au niveau de l’application sur SslStream. Le serveur annonce la prise en charge de protocol1
et protocol2
. Le client annonce la prise en charge de protocol2
et protocol3
. Le protocole couramment pris en charge (protocol2
) est négocié pendant la négociation.
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
Remarques
Ce type contient des champs statiques avec des valeurs prédéfinies SslApplicationProtocol pour les versions HTTP.
Pendant la négociation, le client envoie une liste des protocoles ALPN disponibles et le serveur choisit la meilleure correspondance dans cette liste.
Pour obtenir la liste complète des protocoles pris en charge, consultez ID de protocole ALPN (TLS Application-Layer Protocol Negotiation).
Constructeurs
SslApplicationProtocol(Byte[]) |
Initialise une nouvelle instance de l'objet SslApplicationProtocol. |
SslApplicationProtocol(String) |
Initialise une nouvelle instance de l'objet SslApplicationProtocol. |
Champs
Http11 |
Obtient un SslApplicationProtocol qui représente le protocole d’application HTTP/1.1 TLS. |
Http2 |
Obtient un SslApplicationProtocol qui représente le protocole d’application HTTP/2 TLS. |
Http3 |
Définit une SslApplicationProtocol instance pour HTTP 3.0. |
Propriétés
Protocol |
Obtient le protocole d’application TLS actuel représenté par ce SslApplicationProtocol . |
Méthodes
Equals(Object) |
Compare SslApplicationProtocol avec l'objet spécifié. |
Equals(SslApplicationProtocol) |
Compare un SslApplicationProtocol à l'instance de SslApplicationProtocol spécifiée. |
GetHashCode() |
Retourne le code de hachage de l'instance de SslApplicationProtocol. |
ToString() |
Substitue la méthode ToString(). |
Opérateurs
Equality(SslApplicationProtocol, SslApplicationProtocol) |
Opérateur d’égalité pour la comparaison de deux objets SslApplicationProtocol. |
Inequality(SslApplicationProtocol, SslApplicationProtocol) |
L’opérateur d’inégalité pour la comparaison de deux objets SslApplicationProtocol. |