hemen her projede kullandığım şeylerdir veri tabloları ve kesinlikle bunlarda bir de bir de stil isteriz. her bulaştığım dilde bir gridim oldu .netin data gridini de hiç sevmedim bu arada (: Smarty Template gibi görünüm kazandırılabilen her sütun için her sütun başlığı için her satır için her hücreye için ayrı template uygulanabileen Callback’lerle güclendirilmiş (event-based) bir html grid yazdım . tabi pagination bunun olmazsa olması onu da ekledim ve MyBB stillerini kullandım (: ufak bir görüntü verip hemen kaynak kodları paylaşmak istiyorum. geliştirmek isteyen arkadaşlar da bu konu altında ya da bana mail atarak yazdıklarını gonderebilirler. iyi çalışmalar
bugün oturum yönetimli bir proje üzerinde çalışırken ilk defa karşılaştığım bir hata aldım.
System.Web.HttpException: Session state can only be
used when enableSessionState is set to true, either in a configuration
file or in the Page directive. Please also make sure that
System.Web.SessionStateModule or a custom session state module is
included in the <configuration>\<system.web>\<httpModules> section in
the application configuration.
Türkçesi :
Oturum durumu yalnızca yapılandırma dosyasında veya Page yönergesinde enableSessionState true olarak ayarlandığında kullanılabilir. Lütfen, uygulama yapılandırmasındaki <configuration>\<system.web>\<httpModules> bölümüne System.Web.SessionStateModule veya özel bir oturum durumu modülünün de eklendiğinden emin olun
ilk aramalarımda enableSessionStat=true gibi bir ibare kullanmam gerektiği kanısındaydım ama sonra durumu anladım ki .cs dosyanız bir aspx ile beraber derlenmiyorsa bu session web sessiondan farklı bir modul gibi kullanılabiliyor ama bu benim işime gelmez tabi ki.. BasePage.cs dosyamda session kontrolu yapmaya kalkmıştım bunda da doğal olarak hata almıştım. BasePage dosyamda session_start() adında protected bir fonksiyon tanımlayıp bunu türettiğim login sayfamda çağırdım hepsi bu kolay gelsin..
merhaba arkadaşlar, önceki yazılarımda cıktı sıkıştırmanın önemini ve http protokolunde encoding iletişimini anlatmıştım. asp.net ile bunları nasıl uygularız şimdi de onu anlatalım. ilk önce output müdahale için Response objemizi kullanacağımızı soylemek istiyorum. php ile kıyaslayıp daha anlaşılır hale getirmek istersek. aspxte her zaman output buffer başlatılıyor istediimiz yerde müdahale edip bunu istediğimizi gibi cıktı olarak veriyoruz.
bize Response.Filter gibi şahane bir de kapı bırakıyor aspx. bu filter sayesinde istediğimiz gibi fonksiyonlardan geçirip cıktıyı istediğimiz gibi kontrol edebiliyoruz.
şimdi System.IO.Compression namespace den yararlanarak gzip ve deflate ile sıkıştırılmış cıktılar verelim tarayıcıya. ne yazıkki php gibi accept-encoding bilgisini kendisi kontrol etmiyor bunu da biz kontrol etmeliyiz.
HttpContext.Current objesindeki Request bizim için Client. Response ise server taraflı cıktı ya da istek oluyor.
HttpContext.Current.Request.Headers; dizi içerisinde client tarafından gönderilen header bilgilerini kontrol edip buna göre biz de cıktı vermeye calışacağız. kontrol edeceğimiz satır yine Accept-Encoding olacak.
stringAcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];
string türündeki AcceptEncoding değişkenimize clienttan gelen Accept-Encoding satırındaki bilgileri aldık. bunların hangi tarayıcılarda nasıl geldiğine gözatmışmık.
Response.Filter =
new System.IO.Compression.DeflateStream(Response.Filter,System.IO.Compression.CompressionMode.Compress);
asdbahsettiğimiz filter işlemini de Response.Filter işlemiyle cok kolay uygulayabiliyor ama biz her tarayıcının bunu desteklemediğini ya da her sitemize giren ziyaretçinin gerçek tarayıcı olmadığını varsayarsak bunu kontrol edip cıktı vermemiz gerekiyor.
0 1 2 3 4 5 6 7 8 9 10 11 12 | string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"]; if (AcceptEncoding.Contains("deflate")) { Response.Filter = new System.IO.Compression.DeflateStream(Response.Filter, System.IO.Compression.CompressionMode.Compress); Response.AppendHeader("Content-Encoding", "deflate"); } else if (AcceptEncoding.Contains("gzip")) { Response.Filter = new System.IO.Compression.GZipStream(Response.Filter, System.IO.Compression.CompressionMode.Compress); Response.AppendHeader("Content-Encoding", "gzip"); } |
Headers dizisinden aldığımız Accept-Encoding bilgisine göre ilk once deflate sonra gzip kontrolumuzu yapıp cıktımızı Filtreye tabi tuttuk tabi cevaba yani Response Headera Content-Encoding satırında gzip ya da deflate de eklemeyi unutmadık. yoksa tarayıcı bunu ekrana veremezdi.
iyi çalışmalar.








