SslApplicationProtocol Struct
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un valore del protocollo applicativo 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)
- Ereditarietà
- Implementazioni
Esempio
Nell'esempio di codice seguente viene illustrata la negoziazione del protocollo a livello di applicazione in SslStream. Il server annuncia il supporto per protocol1
e protocol2
. Il client annuncia il supporto per protocol2
e protocol3
. Il protocollo comunemente supportato (protocol2
) viene negoziato durante l'handshake.
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
Commenti
Questo tipo contiene campi statici con valori predefiniti SslApplicationProtocol per le versioni HTTP.
Durante l'handshake, il client invia un elenco di protocolli ALPN disponibili e il server sceglie la corrispondenza migliore da tale elenco.
Per un elenco completo dei protocolli supportati, vedere TLS Application-Layer Protocol Negotiation (ALPN).
Costruttori
SslApplicationProtocol(Byte[]) |
Inizializza una nuova istanza dell'oggetto SslApplicationProtocol. |
SslApplicationProtocol(String) |
Inizializza una nuova istanza dell'oggetto SslApplicationProtocol. |
Campi
Http11 |
Ottiene un oggetto SslApplicationProtocol che rappresenta il protocollo applicativo TLS HTTP/1.1. |
Http2 |
Ottiene un oggetto SslApplicationProtocol che rappresenta il protocollo applicativo TLS HTTP/2. |
Http3 |
Definisce un'istanza SslApplicationProtocol per HTTP 3.0. |
Proprietà
Protocol |
Ottiene un protocollo applicativo TLS corrente rappresentato da questo SslApplicationProtocol. |
Metodi
Equals(Object) |
Confronta la classe SslApplicationProtocol con l'oggetto specificato. |
Equals(SslApplicationProtocol) |
Confronta un SslApplicationProtocol con l'istanza specificata di SslApplicationProtocol. |
GetHashCode() |
Restituisce il codice hash per l'istanza di SslApplicationProtocol. |
ToString() |
Esegue l'override del metodo ToString(). |
Operatori
Equality(SslApplicationProtocol, SslApplicationProtocol) |
Operatore di uguaglianza per confrontare due oggetti SslApplicationProtocol. |
Inequality(SslApplicationProtocol, SslApplicationProtocol) |
Operatore di disuguaglianza per confrontare due oggetti SslApplicationProtocol. |