22 Mayıs 2013 Çarşamba

70 | error| 500 |The state information is invalid for this page an might be corrupted ViewState hatası

Merhaba arkadaşlar belli bir zaman önce karşılaştığım bir hatadan size bahsetmek istiyorum bir eticaret sitesinin sepetinde bazı editlemeler yaptım ama delete butonuna tıkladığımda update panel ile ilgili bir sıkıntı vardı ve işlemler olmuyordu ama bu gariplik işlemler chromede olurdun firefox ta çalışmıyordu daha sonra uzun araştırmaların ardından şan eseri viewstate ile ilgili bir sıkıntı olabileceğini düşünüp sıkıştırma işlemi uyguladım ve sorun ortadan kalktı başlıkta yazdığım hatayı delete butonuna tıkladığımda alıyordum bu izleme işlemini firebug ile yapmıştım. Aşağıdaki class i sitemize ekliyoruz.
ZipState.cs


Code:
public static byte[] Compress(byte[] data)
{
   MemoryStream ms = new MemoryStream();
   DeflateStream stream = new DeflateStream(ms, CompressionMode.Compress);
   stream.Write(data, 0, data.Length);
   stream.Close();
   return ms.ToArray();
}public static byte[] Decompress(byte[] data)
{
   MemoryStream ms = new MemoryStream();
   ms.Write(data, 0, data.Length);
   ms.Position = 0;
   DeflateStream stream = new DeflateStream(ms, CompressionMode.Decompress);
   MemoryStream temp = new MemoryStream();
   byte[] buffer=new byte[1024];

   while (true)
   {
      int read = stream.Read(buffer, 0, buffer.Length);
      if (read <= 0)
      {
         break;
      }
      else
      {
         temp.Write(buffer, 0, buffer.Length);
      }
   }
   stream.Close();
   return temp.ToArray();
}

tamamen düzgün çalışma garantisi yok ama bazen yanlış sıkıştırabiliyormuş gerçi ben karşılaşmadım ama aşağıdaki kodlarıda sitemizde ViewState ini sıkıştırmak istediğimiz sayfaya ekliyoruz.


Code:
protected override void SavePageStateToPersistenceMedium(object state)
{
   LosFormatter formatter = new LosFormatter();
   StringWriter writer = new StringWriter();
   formatter.Serialize(writer, state);
   string viewState = writer.ToString();
   byte[] data = Convert.FromBase64String(viewState);
   byte[] compressedData = ZipState.Compress(data);
   string str = Convert.ToBase64String(compressedData);
   ClientScript.RegisterHiddenField("__CompressedVIEWSTATE", str);
}

protected override object LoadPageStateFromPersistenceMedium()
{
   string viewstate = Request.Form["__CompressedVIEWSTATE"];
   byte[] data = Convert.FromBase64String(viewstate);
   byte[] uncompressedData = ZipState.Decompress(data);
   string str = Convert.ToBase64String(uncompressedData);
   LosFormatter formatter = new LosFormatter();
   return formatter.Deserialize(str);
}

1 yorum:

  1. Hocam çok teşekkür ederim çalıştı bir gündür bu kodu arıyordum

    YanıtlaSil