Aracılığıyla paylaş


HttpListenerRequest.Url Özellik

Tanım

Uri İstemci tarafından istenen nesneyi alır.

public:
 property Uri ^ Url { Uri ^ get(); };
public Uri? Url { get; }
public Uri Url { get; }
member this.Url : Uri
Public ReadOnly Property Url As Uri

Özellik Değeri

Uri

Uri İstemci tarafından istenen kaynağı tanımlayan bir nesne.

Örnekler

Aşağıdaki kod örneği özelliğinin Url kullanılmasını gösterir.

public static void ShowRequestProperties1 (HttpListenerRequest request)
{
    // Display the MIME types that can be used in the response.
    string[] types = request.AcceptTypes;
    if (types != null)
    {
        Console.WriteLine("Acceptable MIME types:");
        foreach (string s in types)
        {
            Console.WriteLine(s);
        }
    }
    // Display the language preferences for the response.
    types = request.UserLanguages;
    if (types != null)
    {
        Console.WriteLine("Acceptable natural languages:");
        foreach (string l in types)
        {
            Console.WriteLine(l);
        }
    }

    // Display the URL used by the client.
    Console.WriteLine("URL: {0}", request.Url.OriginalString);
    Console.WriteLine("Raw URL: {0}", request.RawUrl);
    Console.WriteLine("Query: {0}", request.QueryString);

    // Display the referring URI.
    Console.WriteLine("Referred by: {0}", request.UrlReferrer);

    //Display the HTTP method.
    Console.WriteLine("HTTP Method: {0}", request.HttpMethod);
    //Display the host information specified by the client;
    Console.WriteLine("Host name: {0}", request.UserHostName);
    Console.WriteLine("Host address: {0}", request.UserHostAddress);
    Console.WriteLine("User agent: {0}", request.UserAgent);
}
Public Shared Sub ShowRequestProperties1(ByVal request As HttpListenerRequest)
    ' Display the MIME types that can be used in the response.
    Dim types As String() = request.AcceptTypes

    If types IsNot Nothing Then
        Console.WriteLine("Acceptable MIME types:")

        For Each s As String In types
            Console.WriteLine(s)
        Next
    End If

    ' Display the language preferences for the response.
    types = request.UserLanguages

    If types IsNot Nothing Then
        Console.WriteLine("Acceptable natural languages:")

        For Each l As String In types
            Console.WriteLine(l)
        Next
    End If

    ' Display the URL used by the client.
    Console.WriteLine("URL: {0}", request.Url.OriginalString)
    Console.WriteLine("Raw URL: {0}", request.RawUrl)
    Console.WriteLine("Query: {0}", request.QueryString)

    ' Display the referring URI.
    Console.WriteLine("Referred by: {0}", request.UrlReferrer)

    ' Display the HTTP method.
    Console.WriteLine("HTTP Method: {0}", request.HttpMethod)

    ' Display the host information specified by the client.
    Console.WriteLine("Host name: {0}", request.UserHostName)
    Console.WriteLine("Host address: {0}", request.UserHostAddress)
    Console.WriteLine("User agent: {0}", request.UserAgent)
End Sub

Açıklamalar

Url özelliği, bir Uri nesneden sağlanan tüm bilgileri edinmenizi sağlar. URI isteğinin yalnızca ham metnini bilmeniz gerekiyorsa, bunun yerine özelliğini kullanmayı RawUrl göz önünde bulundurun.

Url İstemciden gelen ayrıştırılamadıysa Uri özelliği null olur.

özelliği, UnescapeRequestUrl yüzde kodlamalı değerlerin dönüştürüldüğü ve diğer normalleştirme adımlarının atıldığı dönüştürülmüş URI yerine ham ayarlanmamış URI'nin kullanılıp kullanılmadığını gösterir HttpListener .

Bir HttpListener örnek hizmet aracılığıyla http.sys bir istek aldığında, tarafından http.syssağlanan URI dizesinin bir örneğini oluşturur ve özelliği olarak HttpListenerRequest.Url kullanıma sunar.

Hizmet http.sys iki istek URI dizesini kullanıma sunar:

  • Ham URI

  • Dönüştürülen URI

Ham URI, bir HTTP isteğinin istek satırında sağlanan URI'dir System.Uri :

GET /path/

Host: www.contoso.com

Yukarıda bahsedilen istek için tarafından http.sys sağlanan ham URI "/path/" şeklindedir. Bu, ağ üzerinden gönderildiği için HTTP fiilini izleyen dizeyi temsil eder.

Hizmet, http.sys HTTP istek satırında sağlanan URI'yi ve isteğin iletilmesi gereken kaynak sunucuyu belirlemek için Konak üst bilgisini kullanarak istekte sağlanan bilgilerden dönüştürülmüş bir URI oluşturur. Bu, istekten alınan bilgiler bir dizi kayıtlı URI ön eki ile karşılaştırılarak yapılır. Bu değerleri karşılaştırabilmek için istekte bir miktar normalleştirme yapılması gerekir. Yukarıdaki örnek için dönüştürülen URI aşağıdaki gibi olacaktır:

http://www.contoso.com/path/

Hizmet, http.sys özellik değerini ve istek satırındaki dizeyi birleştirerek Uri.Host dönüştürülmüş bir URI oluşturur. Ayrıca ve http.sysSystem.Uri sınıfı da aşağıdakileri yapar:

  • Kodlanmış tüm yüzde değerlerinin kaçışlarını çözer.

  • Yüzde kodlamalı ASCII olmayan karakterleri UTF-16 karakter gösterimine dönüştürür. UTF-8 ve ANSI/DBCS karakterlerinin yanı sıra Unicode karakterlerinin de (%uXXXX biçimini kullanan Unicode kodlaması) desteklendiğini unutmayın.

  • Yol sıkıştırma gibi diğer normalleştirme adımlarını yürütür.

İstek, yüzde kodlamalı değerler için kullanılan kodlama hakkında herhangi bir bilgi içermediğinden, yalnızca yüzde kodlanmış değerleri ayrıştırarak doğru kodlamayı belirlemek mümkün olmayabilir.

Bu nedenle http.sys , işlemi değiştirmek için iki kayıt defteri anahtarı sağlar:

Kayıt Defteri Anahtarı Varsayılan değer Description
EnableNonUTF8 1 Sıfırsa, http.sys yalnızca UTF-8 kodlu URL'leri kabul eder.

Sıfır değilse, http.sys isteklerde ANSI ile kodlanmış veya DBCS ile kodlanmış URL'leri de kabul eder.
FavorUTF8 1 Sıfır değilse, http.sys her zaman önce URL'nin kodunu UTF-8 olarak çözmeyi dener; bu dönüştürme başarısız olursa ve EnableNonUTF8 sıfır değilse, Http.sys bunu ANSI veya DBCS olarak çözmeyi dener.

Sıfır (ve EnableNonUTF8 sıfır değilse), http.sys ANSI veya DBCS olarak kodunu çözmeyi dener; başarılı olmazsa UTF-8 dönüştürmesini dener.

HttpListener bir istek aldığında, özelliğine giriş olarak öğesinden http.sys dönüştürülen URI'yi Url kullanır.

URI'lerdeki karakterlerin ve sayıların yanı sıra destekleyici karakterlere de ihtiyaç vardır. "1/3812" müşteri numarasının müşteri bilgilerini almak için kullanılan aşağıdaki URI'ye örnek verilmiştir:

http://www.contoso.com/Customer('1%2F3812')/

Uri(%2F) içindeki yüzde kodlamalı eğik çizgiye dikkat edin. Bu gereklidir, çünkü bu durumda eğik çizgi karakteri bir yol sınırlayıcısı değil verileri temsil eder.

Dizenin Uri oluşturucusunun geçirilmesi aşağıdaki URI'ye yol açar:

http://www.contoso.com/Customer('1/3812')/

Yolun kesimlerine bölünmesi aşağıdaki öğelere neden olur:

Customer('1

3812')

Bu, isteği gönderenin amacı değildir.

UnescapeRequestUrl Özellik false olarak ayarlanırsa, isteği aldığında HttpListener özelliğine giriş olarak öğesinden http.sys dönüştürülen URI yerine ham URI'yi Url kullanır.

Şunlara uygulanır

Ayrıca bkz.