2015-08-28 28 views
5

HttpListener'da tek bir bağlantının maksimum toplam süresini kontrol etmeye çalışıyorum. TimeoutManager özelliğinin ve içerdiği 5 veya çok farklı zaman aşımı değerlerinin farkındayım, ancak bu değerlerin her birinin bir bağlantıda gecikmenin oluşabileceği toplam yerlere eklenip eklenmeyeceği açık değil.HttpListener toplam bağlantı zaman aşımı ayarı

"Şu ana kadar bağlantıyı açtığım andan itibaren xs'den daha uzun süren bir bağlantımız varsa, başka bir şey göndermeden ya da başka bir şey beklemeden iptal edin."

netleştirmek için DÜZENLEME, ben deneme edildi senaryo tepkisi ve müşteri almıyor göndermeye çalışıyor sunucuyu içerir. Bu sonsuza kadar asmak için HttpListenerResponse.OutputStream.Write() neden olur. Bağlantıyı durdurmak için başka bir iş parçacığından arayabileceğim bir yöntem bulmaya çalışıyordum. OutputStream.Close() kullanmayı denedim ve Cannot Close Stream until all bytes are written aldım. Görünür bir etki üretmeyen HttpListenerResponse.Abort()'u da denedim.

cevap

3

Bu özelliklerin hiçbiri istediğiniz şeyi yapmaz. HttpListener, istek akışını, gelen ve giden verileri kontrol etmeyi amaçlamaktadır, bu nedenle yanıtın tam olarak alındığı zaman ile bir cevap gönderdiğinizde zamanın üstesinden gelmez, bununla ilgilenmeniz sizin sorumluluğunuzdur.

Yeni bağlantı süresi sona erecek toplam zaman aşımı ile bir zamanlayıcı enqueue oluşturulduğunda toplam zaman sadece zamanlayıcı, yeterli olabilir, istenilen olandan higer ise eğer, isteği iptal etmek için kendi mekanizmasını oluşturmalıdır İstek zamanlayıcının süresi dolmadan önce sona erer, zamanlayıcıyı iptal eder, ancak zamanlayıcı isteği iptal eder.

İlgili konular