Aracılığıyla paylaş


<httpListener> Öğesi (Ağ Ayarları)

sınıfı tarafından HttpListener kullanılan parametreleri özelleştirir.

<Yapılandırma>
  <system.net>
    <Ayarlar>
      <httpListener>

Syntax

<httpListener  
  unescapeRequestUrl="true|false"  
/>  

Tür

Öznitelikler ve Öğeler

Öznitelikler, alt ve üst öğeler aşağıdaki bölümlerde açıklanmaktadır.

Öznitelikler

Öznitelik Açıklama
unescapeRequestUrl Örneğin dönüştürülen URI yerine ham ayarlanmamış URI'yi kullanıp kullanmadığını gösteren Boole HttpListener değeri.

Alt Öğeler

Yok.

Üst Öğeler

Öğe Açıklama
ayarlar Ad alanı için temel ağ seçeneklerini yapılandırılır System.Net .

Açıklamalar

unescapeRequestUrl özniteliği, 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ı belirtirHttpListener.

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 iki http.sys 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önderilen HTTP fiilinden sonraki dizeyi temsil eder.

Hizmet, http.sys isteğin iletilmesi gereken kaynak sunucuyu belirlemek için HTTP istek satırında ve Konak üst bilgisinde sağlanan URI'yi 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 gerçekleştirilir. HTTP Server SDK belgeleri, bu dönüştürülmüş URI'yi HTTP_COOKED_URL yapısı olarak ifade eder.

İsteği kayıtlı URI ön ekleriyle karşılaştırabilmek için istekte bazı normalleştirmelerin 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 dönüştürülmüş bir URI oluşturmak için özellik değerini ve istek satırındaki dizeyi birleştirir Uri.Host . Ayrıca ve http.sysSystem.Uri sınıfı da aşağıdakileri yapar:

  • Kodlanmış yüzde değerlerinin tümünün kaçışı kaldırılır.

  • 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 kodlama) 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 kodlamalı 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 Açıklama
EnableNonUTF8 1 Sıfır ise, http.sys yalnızca UTF-8 ile kodlanmış URL'leri kabul eder.

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

Sıfırsa (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ürmesi 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 durumda eğik çizgi karakteri bir yol sınırlayıcısı değil verileri temsil ettiğinden bu gereklidir.

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

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

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

Customer('1

3812')

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

unescapeRequestUrl özniteliği false olarak ayarlanırsa, istek aldığında HttpListener özelliğine giriş olarak dönüştürülen URI yerine ham URI'yi http.sysUrl kullanır.

unescapeRequestUrl özniteliği için varsayılan değer true değeridir.

UnescapeRequestUrl özelliği, geçerli yapılandırma dosyalarından unescapeRequestUrl özniteliğinin geçerli değerini almak için kullanılabilir.

Örnek

Aşağıdaki örnekte, özelliğine giriş olarak öğesinden HttpListenerhttp.sys dönüştürülen URI yerine ham URI'yi kullanma isteği aldığında sınıfın nasıl yapılandırılır gösterilmektedir Url .

<configuration>  
  <system.net>  
    <settings>  
      <httpListener  
        unescapeRequestUrl="false"  
      />  
    </settings>  
  </system.net>  
</configuration>  

Öğe Bilgisi

Ad Alanı: System.Net

Ayrıca bkz.