Aracılığıyla paylaş


HttpListenerPrefixCollection.Add(String) Yöntem

Tanım

Koleksiyona Tekdüzen Kaynak Tanımlayıcısı (URI) ön eki ekler.

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)

Parametreler

uriPrefix
String

String Gelen isteklerde karşılaştırılan URI bilgilerini tanımlayan. Ön ek, eğik çizgi ("/") ile sonlandırılmalıdır.

Uygulamalar

Özel durumlar

uriPrefix, null değeridir.

uriPrefix http:// veya https:// düzenini kullanmaz. Nesneler için HttpListener desteklenen tek şemalar bunlardır.

-veya-

uriPrefix doğru biçimlendirilmiş bir URI ön eki değildir. Dizenin "/" ile sonlandırıldığına emin olun.

HttpListener Bu koleksiyonla ilişkilendirilmiş olan kapatılır.

Windows işlev çağrısı başarısız oldu. Özel durumun nedenini belirlemek için özel durumun ErrorCode özelliğini denetleyin. Bu özel durum, başka biri HttpListener ön ekini uriPrefixeklemişse oluşturulur.

Örnekler

Aşağıdaki kod örneği bir HttpListener oluşturur ve kullanıcı tarafından belirtilen ön ekleri öğesine HttpListenerPrefixCollectionekler.

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

Açıklamalar

Bu yöntem, ilişkili HttpListener nesne tarafından yönetilen ön ek kümesine bir URI ön eki ekler. Geçerli olup olmadığını denetlerken uriPrefix büyük/küçük harf yoksayılır.

URI ön ek dizesi bir düzen (http veya https), bir konak, isteğe bağlı bir bağlantı noktası ve isteğe bağlı bir yoldan (örneğin, "http://www.contoso.com:8080/customerData/") oluşur. Ön ek, eğik çizgi ("/") ile sonlandırılmalıdır. HttpListener İstenen bir URI ile en yakından eşleşen ön eke sahip olan istek yanıt verir. Birden çok HttpListener nesne aynı ön eki ekleyemez. Zaten HttpListenerException kullanımda olan bir ön ek eklerse bir HttpListener özel durum oluşturulur.

Bir bağlantı noktası belirtildiğinde, istenen URI'nin başka bir ön ekle eşleşmemesi durumunda bağlantı noktasına gönderilen istekleri kabul ettiğini HttpListener belirtmek için konak öğesi "*" ile değiştirilebilir. Örneğin, istenen URI başka HttpListenerherhangi bir tarafından işlenmediğinde 8080 numaralı bağlantı noktasına gönderilen tüm istekleri almak için ön ek "http://*:8080/" olur. Benzer şekilde, öğesinin bir bağlantı noktasına gönderilen tüm istekleri kabul ettiğini HttpListener belirtmek için konak öğesini "+" karakteriylehttps://+:8080/ değiştirin. "*" ve "+" karakterleri, yolları içeren ön eklerde bulunabilir.

.NET 4.5.3 ve Windows 10'dan başlayarak, joker karakter alt etki alanları bir HttpListener nesne tarafından yönetilen URI ön eklerinde desteklenir. Joker karakter alt etki alanı belirtmek için, URI ön ekinde konak adının bir parçası olarak "*" karakterini kullanın: örneğin, http://*.foo.com/ve bunu HttpListenerPrefixCollection.Add yöntemine bağımsız değişken olarak geçirin. Bu, .NET 4.5.3 ve Windows 10'da çalışır; önceki sürümlerde, bu bir HttpListenerException

Şunlara uygulanır

Ayrıca bkz.