none
HttpWebRequest sorunu RRS feed

  • Soru

  • Merhaba arkadaşlar aşağıdaki kodlar ile google botlarına ping atıyorum. Ama benim istediğim sadece xml post etsin sonuç dönmesi için beklemesin.

          HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
          request.Method = "POST";
          request.ContentType = "text/xml";
          request.Timeout = 3000;

          AddXmlToRequest(request,surl,ad);
          request.GetResponse();    

    bu kod ile post ettiğimde sanırsam veriyi gönderiyor sonra cevap gelmesini bekliyor doğal olarak kod ağır işliyor.Ben sadece post etsin sonuç beklemesin.


    yok

    6 Eylül 2015 Pazar 11:34

Yanıtlar

  • Merhaba ,

    GetResponse demezseniz istek servera ulaşmaz bu yüzden async özelliğini kullanabilirsiniz.

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("");
                request.Method = "POST";
                request.ContentType = "text/xml";
                request.Timeout = 3000;
                request.BeginGetResponse(ar =>
                {
                    WebResponse response = request.EndGetResponse(ar);
                    response.Close();
                }, request);
    Buradaki kısım BeginGetResponse() çok önemli zira Response geldiğinde kapatmanız gerekli aksi durumda ServicePoin ler birikecek ve request edemez hale geleceksiniz. Diğer bir durum ise siz bu işlemleri yaparken havuzda ne kadar ServicePoint birikeceğidir. Bu da .NET platformunda 2 olarak belirlenmiştir. Yani paralelel olarak 2 adet request yapabilirsiniz. Bunu değiştirmek için "ServicePointManager.DefaultConnectionLimit " özelliğini değiştirmelisiniz. Bu özelliği kaynağınıza göre ayarlayın yoksa kötü sorunlar olabilir.


    MSDN - Forum

    7 Eylül 2015 Pazartesi 22:11

Tüm Yanıtlar

  • GetResponse() kullanmadan denediniz mi?
    Getresponse etmezsek veriyi göndermez ki, databind() yapmamak gibi birşey.

    yok

    7 Eylül 2015 Pazartesi 18:15
  • Merhaba ,

    GetResponse demezseniz istek servera ulaşmaz bu yüzden async özelliğini kullanabilirsiniz.

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("");
                request.Method = "POST";
                request.ContentType = "text/xml";
                request.Timeout = 3000;
                request.BeginGetResponse(ar =>
                {
                    WebResponse response = request.EndGetResponse(ar);
                    response.Close();
                }, request);
    Buradaki kısım BeginGetResponse() çok önemli zira Response geldiğinde kapatmanız gerekli aksi durumda ServicePoin ler birikecek ve request edemez hale geleceksiniz. Diğer bir durum ise siz bu işlemleri yaparken havuzda ne kadar ServicePoint birikeceğidir. Bu da .NET platformunda 2 olarak belirlenmiştir. Yani paralelel olarak 2 adet request yapabilirsiniz. Bunu değiştirmek için "ServicePointManager.DefaultConnectionLimit " özelliğini değiştirmelisiniz. Bu özelliği kaynağınıza göre ayarlayın yoksa kötü sorunlar olabilir.


    MSDN - Forum

    7 Eylül 2015 Pazartesi 22:11