14 Temmuz 2010 Çarşamba

Windows Servis Uygulamasında HttpWebResponse Alma

Daha önce Windows uygulaması olarak yazdığım kodları Windows servise geçirince response boş geliyordu. Örnek kodlar aşağıdadır:


   1:  HttpWebRequest wreq = (HttpWebRequest)System.Net.WebRequest.Create(url);
   2:  System.Net.WebProxy pry = new System.Net.WebProxy("x.x.x.x", 80);
   3:  pry.Credentials = System.Net.CredentialCache.DefaultCredentials;
   4:   
   5:  wreq.Proxy = pry;
   6:  wreq.Method = "GET";
   7:  wreq.Timeout = 3000;
   8:  HttpWebResponse wr = (HttpWebResponse)wreq.GetResponse();
   9:  if (wr.StatusCode == System.Net.HttpStatusCode.OK)
  10:  {
  11:      System.IO.Stream s = wr.GetResponseStream();
  12:      System.Text.Encoding enc = System.Text.Encoding.GetEncoding("windows-1254");
  13:      System.IO.StreamReader readStream = new System.IO.StreamReader(s, enc);
  14:      result = readStream.ReadToEnd();
  15:  }

Bunun sebebi windows formda user account'ının, windows serviste ise network account'ının kullanılmasıymış. Çözüm için, ProjectInstaller.cs içindeki serviceProcessInstaller özelliklerinden Account özelliğini "User" olarak değiştirmek gerekiyor.