Udostępnij za pośrednictwem


HttpListenerPrefixCollection.Add(String) Metoda

Definicja

Dodaje prefiks Uniform Resource Identifier (URI) do kolekcji.

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)

Parametry

uriPrefix
String

Element String identyfikujący informacje o identyfikatorze URI, które są porównywane w żądaniach przychodzących. Prefiks musi zostać zakończony ukośnikiem do przodu ("/").

Implementuje

Wyjątki

uriPrefix to null.

uriPrefix nie używa schematu http:// ani https://. Są to jedyne schematy obsługiwane dla HttpListener obiektów.

-lub-

uriPrefix nie jest poprawnie sformatowanym prefiksem identyfikatora URI. Upewnij się, że ciąg został zakończony za pomocą ciągu "/".

Skojarzone HttpListener z tą kolekcją są zamknięte.

Wywołanie funkcji systemu Windows nie powiodło się. Sprawdź właściwość wyjątku ErrorCode , aby określić przyczynę wyjątku. Ten wyjątek jest zgłaszany, jeśli inny HttpListener został już dodany prefiks uriPrefix.

Przykłady

Poniższy przykład kodu tworzy i HttpListener dodaje prefiksy określone przez użytkownika do elementu 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

Uwagi

Ta metoda dodaje prefiks identyfikatora URI do zestawu prefiksów zarządzanych przez skojarzony HttpListener obiekt. Podczas sprawdzania uriPrefix , czy jest ona prawidłowa, wielkość liter jest ignorowana.

Ciąg prefiksu identyfikatora URI składa się ze schematu (http lub https), hosta, opcjonalnego portu i opcjonalnej ścieżki, na przykład "http://www.contoso.com:8080/customerData/". Prefiks musi zostać zakończony ukośnikiem do przodu ("/"). Prefiks HttpListener , który najlepiej pasuje do żądanego identyfikatora URI, odpowiada na żądanie. Wiele HttpListener obiektów nie może dodać tego samego prefiksu. Wyjątek HttpListenerException jest zgłaszany, jeśli HttpListener doda prefiks, który jest już używany.

Po określeniu portu element hosta może zostać zastąpiony symbolem "*", aby wskazać, że HttpListener akceptuje żądania wysyłane do portu, jeśli żądany identyfikator URI nie jest zgodny z innym prefiksem. Na przykład aby otrzymywać wszystkie żądania wysyłane do portu 8080, gdy żądany identyfikator URI nie jest obsługiwany przez inny HttpListenerelement , prefiks to "http://*:8080/". Podobnie, aby określić, że HttpListener akceptuje wszystkie żądania wysyłane do portu, zastąp element hosta znakiem "" "+https://+:8080/". Znaki "*" i "+" mogą być obecne w prefiksach, które zawierają ścieżki.

Począwszy od platformy .NET 4.5.3 i Windows 10, poddomeny wieloznaczne są obsługiwane w prefiksach identyfikatorów URI zarządzanych przez HttpListener obiekt. Aby określić poddomenę symboli wieloznacznych, użyj znaku "*" jako części nazwy hosta w prefiksie identyfikatora URI: na przykład http://*.foo.com/, a następnie przekaż go jako argument do metody HttpListenerPrefixCollection.Add. Będzie to działać na platformie .NET 4.5.3 i Windows 10; w starszych wersjach spowoduje to wygenerowanie HttpListenerException

Dotyczy

Zobacz też