2009-03-02 27 views
1

Başka bir sunucuda bir web hizmetini yoklayan bir web uygulamasına sahibim. Sunucu aynı ağ üzerinde bulunur ve 8080 numaralı bağlantı noktasında çalışan bir iç IP tarafından başvuruda bulunur.HttpWebRequest geri dönmüyor, bağlantı kapanıyor

Her 15 saniyede bir iş isteği ile bir xml yanıtı alan bir istek gönderilir. Zamanın% 95'i, bu iyi çalışır, ancak rasgele zamanlarda, sunucuya yapılan istek boştur ve "uzak ana bilgisayar tarafından zorla kapatılan bir yanıt" rapor eder.

Bu sorunu araştırırken, diğerleri KeepAlive = false ayarladı. Bu sorunu çözmedi. Web sunucusu .NET 3.5 SP1 çalıştırıyor. yanıta

Uri serverPath = new Uri(_Url); 

// create the request and set the login credentials 
_Req = (HttpWebRequest)WebRequest.Create(serverPath); 
_Req.KeepAlive = false; 
_Req.Credentials = new NetworkCredential(username, password); 
_Req.Method = this._Method; 

Çağrısı: Bunun

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
_ResponseStream = response.GetResponseStream(); 

yöntem GET. Zaman aşımını değiştirmeyi denedim, ancak varsayılan, bunu hesaba katmak için yeterince büyük.

Yaptığımız diğer istek, sunucuya veri göndermek için bir POST ve aynı sorunu rastgele alıyoruz. Bunu etkileyen hiçbir güvenlik duvarı yok ve biz de virüs tarayıcısını kararlaştırdık. Bunu çözmeye yardımcı olacak herhangi bir fikir büyük beğeni topluyor!

+0

Bağlantının sıklığı nedir? Sunucu günlüğünde ilginç bir şey var mı? – jdigital

+0

Sunucunun aslında bağlantıları kapattığından emin misiniz? İstemcinizde değil, sunucuda bir hata olması tamamen mümkündür. –

cevap

5

Yanıt akışını kapatıyor ve yanıtın kendisini yok ediyor mu? Bu, WebRequest ile "askıda kalmanın" en sık nedenidir - aynı anda aynı makineye kaç bağlantı açabileceğinizi sınırlayan bir sınır vardır. GC sonunda bağlantıları sonlandıracak, ancak bunları düzgün bir şekilde elden çıkarırsanız sorun olmaz.

0

Ağ sorunlarını sorunların olası bir nedeni olarak göz ardı etmem. Başarısız isteklerinizle aynı zamana denk düşen paketlerinizin olup olmadığını görmek için sunucunuza bir ping mi çalıştırdınız?

0

FtpWebRequest nesnesinin timeout özelliğini en fazla 4 GB Dosya ile denedim ve büyük çalışıyorum.