2014-12-10 113 views
5

System.Net.HttpWebRequest ile çok garip bir sorun var, bu beni deli ediyor: localhost adresiyle çalıştırdığımda, ya çok yavaş (yaklaşık 30 saniye) veya çoğu durumda tamamen zaman aşımına uğrar. Bu, yalnızca localhost hedefini ve yalnızca C# kodundaki istekleri ile olur.Web isteği başarısız oluyor, ancak yalnızca localhost için ve System.Net.HttpWebRequest kullanırken

Somut bir örnek olarak bir ASP.NET Web API projesi alarak, ben bu kodu olduğunda:

[Test] 
public void TestRequest() 
{ 
    var request = WebRequest.Create("http://localhost:64497/api/values"); 
    WebResponse response = request.GetResponse(); 
} 

..it çoğu zaman bu istisna ile başarısız olur:

System.Net.WebException: Uzak sunucuya bağlanılamıyor
---- System.Net.SocketExoLoad: Bağlantılı taraf zamanından veya kurulan bağlantıdan sonra düzgün yanıt vermediğinden bağlantı girişimi başarısız oldu Çünkü Bağlı konak .NET kod kontrolü ile 127.0.0.1:64497

yanıt başarısız oldu, ben boş olmayan bir değer döndüren WSAConnect API hatayı izini, ama şundan olduğunu göremiyorum çok yardım (Ben 64bit sistemde çalıştırıyorum oysa Ancak bu 32bit API'sıdır. Bazı garip 32/64bit sorun olabilir mi?)

ben localhost dışında bir adresle yukarıdaki kodu çalıştırmak

(diyelim http://www.google.com), o zaman normal davranır ve 1 saniyelik yanıt süreleri alırım. Ayrıca, yukarıdaki isteği farklı bir istemciden gönderdiğimde (Chrome'un Advanced REST Client kullandım), normal davranışı alıyorum: İlk derleme nedeniyle ilk istek için yaklaşık 5-8 sn gecikme süresi ve çok kısa yanıt süreleri Sonraki tüm istekler için (20-40 msn).

bu bulgular göz önüne alındığında, sorunun System.Net.HttpWebRequest sınıfının uygulamasına özgü bir şeyden gelmelidir bana oldukça açık görünüyor

...

web uygulaması kendisi IIS Express barındırılan ama ben Yukarıdaki sorunun hiçbir zaman web sunucusuna ulaşmadığından (bu durumun hem IIS Express'i komut satırından çalıştırarak hem de ProcessMonitor'a gelen istekleri inceleyerek kontrol ettiğimden) emin olamadığından emin değilim.

Daha fazla bilgi için: Win 8.1 64bit ve VS 2013 SP4 pro çalıştırıyorum. Sistemin HOST dosyası değiştirilmemiş, yani herhangi bir giriş içermiyor.

şeyler şimdiye kadar denedim:

  • IIS yerine IIS Express kullanılarak tüm güvenlik duvarı ve antivirüs yazılımı
  • kapatılması yönetici modunda
  • VS Running
  • ayar proxysettings açıkça null , her kod için ve her yapılandırmada
  • ProcessMonitor için IIS Express işleminin denetlenmesi - sonuç yok (söylediğim gibi, Web sunucusunun doğrudan davetli olmadığından eminim 127.0.0.1

Sorunun ne anlamıyorum, ben web üzerinde herhangi bir ilgili bilgi bulamıyorum bu sorunla) localhost değişen

  • yılında olved. Hatayı izlemeye çalışabileceğim başka fikirlerim bile yok. Başka bir deyişle: Bu konu üzerinde tamamen takıldım ve yerel olarak barındırılan ağlara karşı herhangi bir entegrasyon testi yazmamı etkili bir şekilde engellememi sağlıyor. Herhangi bir yardım/ipucu/ipucu çok takdir edilmektedir.

  • +1

    Bu sorunun cevabı yok Bir, aynı konuda da sıkışmış olarak :) – ahaaman

    cevap

    0

    Sadece bu bölümü kontrol etmek: ".NET kod kontrolü, ben boş olmayan bir değer döndüren WSAConnect API hata izini ama bu kadar yardımcı olduğunu göremiyorum (Bununla birlikte. Bu 32bit API, 64bit sistemde çalışıyorum. Bazı garip 32/64bit sorunu olabilir mi?) "

    IIS'de, uygulama havuzu için 32-bit kullandığınızdan emin olun. etkin (varsayılan devre dışı).

    Ayrıca, bağlamanın doğru şekilde ayarlandığını varsayalım. (bu son bölüm [bağlayıcı] bir yorum olması gerekiyordu, ama bende rep - silindi, görünüşe göre ya da olacak)