HttpListenerPrefixCollection.Add(String) Methode

Definition

Fügt der Sammlung ein Uniform Resource Identifier-Präfix (URI) hinzu.

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)

Parameter

uriPrefix
String

Eine String, die die URI-Informationen identifiziert, die in eingehenden Anforderungen verglichen werden. Das Präfix muss mit einem Schrägstrich ("/") beendet werden.

Implementiert

Ausnahmen

uriPrefix ist null.

uriPrefix verwendet nicht das Schema „http://“ oder „https://“. Dies sind die einzigen für HttpListener-Objekte unterstützten Schemas.

- oder -

uriPrefix ist kein ordnungsgemäß formatiertes URI-Präfix. Stellen Sie sicher, dass die Zeichenfolge mit einem "/" beendet wird.

Der HttpListener, der dieser Sammlung zugeordnet ist, ist geschlossen.

Bei einem Windows-Funktionsaufruf ist ein Fehler aufgetreten. Überprüfen Sie die ErrorCode-Eigenschaft der Ausnahme, um die Ursache der Ausnahme zu bestimmen. Diese Ausnahme wird ausgelöst, wenn bereits ein anderer HttpListener das uriPrefix-Präfix hinzugefügt hat.

Beispiele

Im folgenden Codebeispiel wird ein HttpListener erstellt und dem benutzerspezifischen HttpListenerPrefixCollectionPräfix hinzugefügt.

// 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

Hinweise

Diese Methode fügt dem Satz von Präfixen, die vom zugeordneten HttpListener Objekt verwaltet werden, ein URI-Präfix hinzu. Wenn Sie überprüfen uriPrefix , ob sie gültig ist, wird die Groß-/Kleinschreibung ignoriert.

Eine URI-Präfixzeichenfolge besteht aus einem Schema (http oder https), einem Host, einem optionalen Port und einem optionalen Pfad, z. B. "http://www.contoso.com:8080/customerData/". Das Präfix muss mit einem Schrägstrich ("/") beendet werden. Der HttpListener mit dem Präfix, das einem angeforderten URI am ehesten entspricht, antwortet auf die Anforderung. Mehrere HttpListener Objekte können dasselbe Präfix nicht hinzufügen. Eine HttpListenerException Ausnahme wird ausgelöst, wenn ein HttpListener Präfix hinzufügt, das bereits verwendet wird.

Wenn ein Port angegeben wird, kann das Hostelement durch "*" ersetzt werden, um anzugeben, dass die HttpListener an den Port gesendeten Anforderungen akzeptiert, wenn der angeforderte URI keinem anderen Präfix entspricht. Um beispielsweise alle Anforderungen zu empfangen, die an Port 8080 gesendet werden, wenn der angeforderte URI von keinem anderen HttpListenerverarbeitet wird, lautet das Präfix "http://*:8080/". Um anzugeben, dass alle Anforderungen akzeptiert, die HttpListener an einen Port gesendet werden, ersetzen Sie das Hostelement durch das Zeichen "+", "https://+:8080/". Die Zeichen "*" und "+" können in Präfixen vorhanden sein, die Pfade enthalten.

Ab .NET 4.5.3 und Windows 10 werden Platzhalterunterdomänen in URI-Präfixen unterstützt, die von einem HttpListener Objekt verwaltet werden. Um eine Platzhalterunterdomäne anzugeben, verwenden Sie das Zeichen "*" als Teil des Hostnamens in einem URI-Präfix, z. B http://*.foo.com/. , und übergeben Sie dieses als Argument an die HttpListenerPrefixCollection.Add-Methode. Dies funktioniert unter .NET 4.5.3 und Windows 10. In früheren Versionen würde dadurch ein HttpListenerException

Gilt für:

Weitere Informationen