Partager via


HttpListenerPrefixCollection.Add(String) Méthode

Définition

Ajoute un préfixe URI (Uniform Resource Identifier) à la collection.

public:
 virtual void Add(System::String ^ uriPrefix);
public void Add (string uriPrefix);
abstract member Add : string -> unit
override this.Add : string -> unit
Public Sub Add (uriPrefix As String)

Paramètres

uriPrefix
String

Un String qui identifie les informations d’URI qui sont comparées dans les demandes entrantes. Le préfixe doit se terminer par une barre oblique (« / »).

Implémente

Exceptions

uriPrefix a la valeur null.

uriPrefix n’utilise pas le schéma http:// ou https://. Ces schémas sont les seuls pris en charge pour les objets HttpListener.

- ou -

uriPrefix n’est pas un préfixe d’URI correctement mis en forme. Assurez-vous que la chaîne se termine par une barre oblique (« / »).

Le HttpListener associé à cette collection est fermé.

Un appel de fonction Windows a échoué. Vérifiez la propriété ErrorCode de l’exception pour déterminer la cause de l’exception. Cette exception est levée si un autre HttpListener a déjà ajouté le préfixe uriPrefix.

Exemples

L’exemple de code suivant crée un et ajoute des HttpListener préfixes spécifiés par l’utilisateur à son HttpListenerPrefixCollection.

// This example requires the System and System.Net namespaces.
public static void SimpleListenerExample(string[] prefixes)
{
    if (!HttpListener.IsSupported)
    {
        Console.WriteLine ("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
        return;
    }
    // URI prefixes are required,
    // for example "http://contoso.com:8080/index/".
    if (prefixes == null || prefixes.Length == 0)
      throw new ArgumentException("prefixes");

    // Create a listener.
    HttpListener listener = new HttpListener();
    // Add the prefixes.
    foreach (string s in prefixes)
    {
        listener.Prefixes.Add(s);
    }
    listener.Start();
    Console.WriteLine("Listening...");
    // Note: The GetContext method blocks while waiting for a request.
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;
    // Obtain a response object.
    HttpListenerResponse response = context.Response;
    // Construct a response.
    string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
    // Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length;
    System.IO.Stream output = response.OutputStream;
    output.Write(buffer,0,buffer.Length);
    // You must close the output stream.
    output.Close();
    listener.Stop();
}
Public Shared Sub SimpleListenerExample(prefixes As String())
    If Not HttpListener.IsSupported Then
        Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.")
        Return
    End If
    ' URI prefixes are required,
    ' for example "http://contoso.com:8080/index/".
    If prefixes Is Nothing Or prefixes.Length = 0 Then
        Throw New ArgumentException("prefixes")
    End If

    ' Create a listener
    Dim listener = New HttpListener()

    For Each s As String In prefixes
        listener.Prefixes.Add(s)
    Next
    listener.Start()
    Console.WriteLine("Listening...")
    ' Note: The GetContext method blocks while waiting for a request.
    Dim context As HttpListenerContext = listener.GetContext()
    Console.WriteLine("Listening...")
    ' Obtain a response object
    Dim request As HttpListenerRequest = context.Request
    ' Construct a response.
    Dim response As HttpListenerResponse = context.Response
    Dim responseString As String = "<HTML><BODY> Hello world!</BODY></HTML>"
    Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(responseString)
    ' Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length
    Dim output As System.IO.Stream = response.OutputStream
    output.Write(buffer, 0, buffer.Length)
    'You must close the output stream.
    output.Close()
    listener.Stop()
End Sub

Remarques

Cette méthode ajoute un préfixe d’URI au jeu de préfixes géré par l’objet associé HttpListener . Lors de la vérification uriPrefix de sa validité, la casse est ignorée.

Une chaîne de préfixe d’URI est composée d’un schéma (http ou https), d’un hôte, d’un port facultatif et d’un chemin d’accès facultatif, par exemple «http://www.contoso.com:8080/customerData/ ». Le préfixe doit se terminer par une barre oblique (« / »). Le HttpListener avec le préfixe qui correspond le plus étroitement à un URI demandé répond à la demande. Plusieurs HttpListener objets ne peuvent pas ajouter le même préfixe. Une HttpListenerException exception est levée si un HttpListener ajoute un préfixe déjà utilisé.

Lorsqu’un port est spécifié, l’élément hôte peut être remplacé par «* » pour indiquer que accepte les HttpListener demandes envoyées au port si l’URI demandé ne correspond à aucun autre préfixe. Par exemple, pour recevoir toutes les requêtes envoyées au port 8080 lorsque l’URI demandé n’est pas géré par un autre HttpListener, le préfixe est «http://*:8080/ ». De même, pour spécifier que le HttpListener accepte toutes les requêtes envoyées à un port, remplacez l’élément hôte par le caractère «+ », «https://+:8080/ ». Les caractères «* » et «+ » peuvent être présents dans des préfixes qui incluent des chemins d’accès.

À compter de .NET 4.5.3 et Windows 10, les sous-domaines génériques sont pris en charge dans les préfixes d’URI gérés par un HttpListener objet . Pour spécifier un sous-domaine générique, utilisez le caractère « * » dans le nom d’hôte dans un préfixe d’URI : par exemple, http://*.foo.com/, et transmettez-le en tant qu’argument à la méthode HttpListenerPrefixCollection.Add. Cela fonctionnera sur .NET 4.5.3 et Windows 10 ; dans les versions antérieures, cela générait un HttpListenerException

S’applique à

Voir aussi