Share via


System.Net.HttpListener sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

sınıfını kullanarak, HTTP isteklerine HttpListener yanıt veren basit bir HTTP protokolü dinleyicisi oluşturabilirsiniz. Dinleyici, nesnenin HttpListener ömrü boyunca etkindir ve izinleriyle uygulamanız içinde çalışır.

kullanmak HttpListeneriçin oluşturucuyu HttpListener kullanarak sınıfının yeni bir örneğini oluşturun ve hangi Tekdüzen Kaynak Tanımlayıcısı (URI) ön ekinin HttpListener işlenmesi gerektiğini belirten dizeleri barındıran koleksiyona erişim elde etmek için özelliğini kullanınPrefixes.

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 oluşur. Tam bir ön ek dizesi örneğidir http://www.contoso.com:8080/customerData/. Ön eklerin eğik çizgi ("/") ile bitmesi gerekir. İstenen HttpListener bir URI ile en yakın eşleşen ön eke sahip nesne isteğe yanıt verir. Birden çok HttpListener nesne aynı öneki ekleyemez; Win32Exception zaten 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 herhangi bir HttpListenertarafından işlenmediğinde 8080 numaralı bağlantı noktasına gönderilen tüm istekleri almak için ön ek http://*:8080/ şeklindedir. Benzer şekilde, bir bağlantı noktasına gönderilen tüm istekleri kabul ettiğini HttpListener belirtmek için konak öğesini "+" karakteriyle değiştirin. Örneğin, https://+:8080. "*" ve "+" karakterleri yol içeren ön eklerde bulunabilir.

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/. Bunu yöntemine Add bağımsız değişken olarak geçirin.

Uyarı

Üst düzey joker karakter bağlamaları (http://*:8080/ ve http://+:8080) kullanılmamalıdır. En üst düzey joker karakter bağlamaları uygulamanızda güvenlik açıklarına neden olabilir. Bu durum hem güçlü hem de zayıf joker karakterler için geçerlidir. Joker karakterler yerine açık konak adları kullanın. Üst etki alanının tamamını denetliyorsanız alt etki alanı bağlamasının (örneğin *.mysub.com) böyle bir güvenlik riski yoktur (güvenlik açığı olan *.com bağlamasından farklı olarak). Daha fazla bilgi için bkz. rfc7230 bölüm 5.4.

İstemcilerden gelen istekleri dinlemeye başlamak için URI ön eklerini koleksiyona ekleyin ve yöntemini çağırın Start . HttpListener istemci isteklerini işlemek için hem zaman uyumlu hem de zaman uyumsuz modeller sunar. İsteklere ve ilişkili yanıtlarına, yöntemi veya zaman uyumsuz karşılıkları BeginGetContext olan ve EndGetContext yöntemleri tarafından GetContext döndürülen nesne kullanılarak HttpListenerContext erişilir.

Uygulamanızın bir istemci isteği beklerken engellemesi gerekiyorsa ve aynı anda yalnızca bir isteği işlemek istiyorsanız zaman uyumlu model uygundur. Zaman uyumlu modeli kullanarak, istemcinin istek göndermesini GetContext bekleyen yöntemini çağırın. yöntemi, bir nesne oluştuğunda işlenmek üzere size bir HttpListenerContext nesne döndürür.

Daha karmaşık zaman uyumsuz modelde, uygulamanız istekleri beklerken engellemez ve her istek kendi yürütme iş parçacığında işlenir. BeginGetContext Her gelen istek için çağrılacak uygulama tanımlı bir yöntem belirtmek için yöntemini kullanın. Bu yöntem içinde, isteği almak, işlemek ve yanıtlamak için yöntemini çağırın EndGetContext .

Her iki modelde de gelen isteklere özelliği kullanılarak HttpListenerContext.Request erişilir ve nesneler tarafından HttpListenerRequest temsil edilir. Benzer şekilde, yanıtlara özelliği kullanılarak HttpListenerContext.Response erişilir ve nesneler tarafından HttpListenerResponse temsil edilir. Bu nesneler ve HttpWebResponse nesneleriyle HttpWebRequest bazı işlevleri paylaşır, ancak ikinci nesneler sunucu değil istemci davranışları uyguladığından ile HttpListener birlikte kullanılamaz.

bir HttpListener istemci kimlik doğrulaması gerektirebilir. Kimlik doğrulaması için kullanılacak belirli bir düzen belirtebilir veya kullanılacak düzeni belirleyen bir temsilci belirtebilirsiniz. İstemcinin kimliği hakkında bilgi edinmek için bir tür kimlik doğrulamasına ihtiyacınız olmalıdır. Ek bilgi için bkz User. , AuthenticationSchemesve AuthenticationSchemeSelectorDelegate özellikleri.

Not

Https kullanarak bir HttpListener oluşturursanız, bu dinleyici için bir Sunucu Sertifikası seçmeniz gerekir. Aksi takdirde, bu HttpListener istekler bağlantının beklenmedik bir şekilde kapatılmasıyla başarısız olur.

Not

Ağ Kabuğu'nu (netsh.exe) kullanarak Sunucu Sertifikalarını ve diğer dinleyici seçeneklerini yapılandırabilirsiniz. Daha fazla ayrıntı için bkz. Network Shell (Netsh). Yürütülebilir dosya Windows Server 2008 ve Windows Vista ile göndermeye başladı.

Not

için HttpListenerbirden çok kimlik doğrulama düzeni belirtirseniz, dinleyici istemcilere şu sırayla meydan okur: Negotiate, NTLM, Digestve sonra Basic.

HTTP.sys

HttpListener sınıfı, Windows için tüm HTTP trafiğini işleyen çekirdek modu dinleyicisi olan öğesinin üzerine HTTP.syskurulmuştur. HTTP.sys bağlantı yönetimi, bant genişliği azaltma ve web sunucusu günlüğü sağlar. SSL sertifikaları eklemek için HttpCfg.exe aracını kullanın.