Bir süredir blogengine.net kullanıyorum. Wordpressle tabiki kıyaslanamaz ama .NET muadilleri arasında fena bir yerde değil.
Arkadaşlarımın yazılım ile ilgili tecrübelerini paylaştıkları sitelere link vermek için BlogRoll extensionı ana sayfaya ekledim ve bir kaç link tanımladım.
Herşey çok güzeldi. Ta ki bir linke tıklayana kadar. Tıkladım ve link benim sayfam ile aynı pencerede açıldı. Hemen panik yapmadım. "Sanırım yeni sayfada aç demeyi unuttum" diyerek yönetim sayfasına gittim. Ama ne yazıkki böyle bir ayar olmadığını görünce bir miktar üzüldüm... Tabi bu dünyanın sonu değildi. Open source bunun için vardı. Hiç açmayacaksak nasıl open source olacaktı değil mi?
App_Code/Controls dizini altında bulunan Blogroll.cs dosyasını açtım ve kodu biraz inceledim. Kısa bir gözatmadan sonra şu kodlara ulaştım...
135 HtmlAnchor webAnchor = new HtmlAnchor();
136 webAnchor.HRef = item.WebsiteUrl;
137 webAnchor.InnerHtml = EnsureLength(item.Name);
Tabi bu noktada iki şey yapılabilirdi... Gidip bu webAnchor class ı neymiş diye bakabilirdim. Ya da yazılımcılık hislerime güvenerek ufak bir kumar oynayabilirdim. Ve kumar oynadım.
135 HtmlAnchor webAnchor = new HtmlAnchor();
136 webAnchor.HRef = item.WebsiteUrl;
137 webAnchor.Target = "_blank";
138 webAnchor.InnerHtml = EnsureLength(item.Name);
Her halde bu sınıfı yazan yazılcı bu özelliği unutacak kadar eşşek olamazdı. Allah'tan olmamış da... Artık blogroll linlerim yeni sayfada açıyor...
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
İş yerinde geliştirmekte olduğumuz projelerde şimdiye kadar MVC Framework Preview 3 kullanmaktaydık. ASP.NET ten farklı çalışma mekanizması nedeniyle yukardaki hatayı sık sık alır ve ValidateRequest = false yapmamıza rağmen sorunu aşamazdık. Çünkü post edilen bilgi önce kontroller a düşmekte ve exception oluşmaktaydı.
Peki temel olarak bu hatanın nedei neydi. Önce bunu bir hatırlayalım.
ASP.NET kullanan yazılımcılar form alanlarından gelebilecek zararlı kodlara karşı daha fazla korunmaya sahiptirler. Yapılabilecek XSS (Cross site script) saldırılarını önlemek yapılan tüm istekler bir geçerlilik kontrolü (validation) işleminden geçer. Bu işlemde temel olarak script bloklarını başlatan ve bitiren taglerde yer alan < ve > işaretleri aranır. Bulunduğu zaman da "System.Web.HttpRequestValidationException" oluşturulur.
Bu sorunu geçiştirmek için sayfa seviyesinde ya da uygulama seviyesinde (ki bu hiç mi hiç tavsiye edilmez.) Geçerlilik kontrolünü kapatabilirsiniz. Bu durumda dış kaynaklardan gelen tüm girdileri zararlı olabilecek metinlere, karakterlere karşı kontrol etmeniz ve filtrelemeniz gerekmektedir.
Bizim durumumuzda ise hiçbir şekilde bu geçerlilik kontrolü geçiştirilememekteydi. Ta ki MVC 1.0 çıkana kadar. Aslında bu özellik Preview 4 ile birlikte gelmesine rağmen biz 3 den direkt olarak MVC 1.0 a atladığımızdan burada farkına varabildik.
Bu yenilik sayesinde controller class tanımımız ya da herhangi bir controller action metod tanımımız için "istek geçerlilik kontrolü"nü devre dışı bırakabiliyoruz.
Şöyle ki:
Bu öznitelik (attribute) sayesinde konulduğu yere göre ilgili controller sınıfının tüm metodları ya da sadece belirli action metodları için bu özellik iptal edilebilmekte.
sınıf Seviyesinde kullanım
1 [ValidateInput(false)]
2 public class BilgilerController : Controller
3 {
4 }
Controller Action seviyesinde kullanım
1 [ValidateInput(false)]
2 public ActionResult BilgilerFormIslem()
3 {
4 return View("abc");
5 }
Böylece ilgili sayfalarda HTML kod kabul eden editör vb. kontroller kullanabiliyoruz. Tabi tekrar hatırlatalım. Bu durumda gelen içeriğin güvenli olup olmadığının denetlenmesi ya da filtrelenmesi yazılımcı tarafından gerçekleştirilmek zorunda...
Kolay gelsin...
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Adresini bildiğiniz bir sayfayı internette gezmekte kullandığını her hangi bir istemcinin (Internet Explorer, Firefox, Opera, Safari, Chrome, vb.) adres satırına yazdığınızda o sayfanın içeriği bilgisayarınıza indirilir ve siz de ekranınızda bu safyayı görürsünüz.
Temel olarak adresi yazıp enter tuşuna basarak sunucuya bir istekte bulunursunuz. Sunucu ilgili isteği işler ve size bir yanıt döner. Siz de ekranınızda bu yanıtı görürsünüz.
Bu mekanizmayı programatik olarak da çalıştırabiliriz. Gerekli desteği .NET Framework System.Net kütüphanesi ile sağlamaktadır.
Örnek: Bir adrese istek gönderme ve web sunucusundan dönen yanıtı alma
1 HttpWebRequest request = null;
2 StreamReader responseStream = null;
3 HttpWebResponse webResponse = null;
4
5 string webResponseStream = string.Empty;
6 string requestUrl ="http://www.holyrider.net";
7
8 try
9 {
10 request = (HttpWebRequest)WebRequest.Create(requestUrl);
11 request.Method = "GET";
12 request.ProtocolVersion = HttpVersion.Version11;
13 request.AllowAutoRedirect = false;
14 request.Accept = "*/*";
15 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
16 request.Headers.Add("Accept-Language", "en-us");
17 request.KeepAlive = true;
18 webResponse = (HttpWebResponse)request.GetResponse();
19 responseStream = new StreamReader(webResponse.GetResponseStream());
20 webResponseStream = responseStream.ReadToEnd();
21 }
22 catch (Exception ex)
23 {
24 webResponseStream = ex.Message;
25 }
Tabi bu örnek temel bir örnek. Geliştirerek çok farklı uygulamalara dönüştürebilirsiniz. Bundan sonrası hayal gücünüze kalmış.
Kolay gelsin...
Gereklilikler: Visual Studio 2008, .NET Framework 3.5
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Geliştirme yapanların dünyasında denizler çok çalkantılıdır... Bu denizlerde mide bulantısından en az şekilde etkilenebilmeleri için sahip oldukları araçlardan en iyi şekilde istifade etmesini bilmelidir. Bu amaçla geliştirme yaparken kullanılabilecek araçlardan biri de Virtual PC 2007 yazılımı. Bu yazılım ile bilgisayarınız üzerinde farklı donanım ve yazılım özelliklerine sahip test ve geliştirme ortamları oluşturabilirsiniz.
Bu yazıda uygulamayı kullanan biri olarak bir "Sık Sorulan Sorular" listesi oluşturmaya çalışacağım.
1- Tam ekran moduna nasıl geçerim?
Tam ekran moduna geçmek için sağdaki alt tuşu olan Alt Gr ve Enter tuşuna basmalısınız. Tam ekrandan çıkmak için de yine Alt Gr+Enter kullanılır.
2- Alt Gr tuşu çalışmıyor, @[]£#$½{}\ gibi 3. karekterleri nasıl yazarım?
Belirtilen karakterleri yazmak için Alt Gr yerine Crtl+Alt kullanabilirsiniz. Bu iş için Alt Gr tuşunu kullanmak istiyorsanız, VPC seçeneklerinden Keybord Host Key olarak daha az kullanılan bir tuşu örneğin "scroll lock" ayarlayabilirsiniz.
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Sql serverda collation kolon seviyesinde ayarlanabilir. Farklı collation ayarlarına sahip tablolar üzerinde sorgu yaparken aşağıdaki hata ile karşılaşırsınız.
"Cannot resolve collation conflict for column X in SELECT statement."
Bu sorunu basitçe aşmak için sorunu yaratan kolon (hata mesajında X sıra numarası ile bildirilen kolon) için "COLLATE DATABASE_DEFAULT" kullanmaktır
[KolonAdi] COLLATE DATABASE_DEFAULT
DATABASE_DEFAULT yerine açık olarak istediğiniz collation adını da yazabilirsiniz.
Ör: SQL_Latin1_General_CP1254_CI_AS, Turkish_CI_AS
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Regular Expression kullanımı ile istemci tarafı geçerlilik kontrollerini hızlı ve sorunsuz şekilde gerçekleştirebiliriz
/^.{4,8}$/
Çok anlamsız gelmesi doğal. Ama bu kodlar bize girilen metnin uyması gereken kriterleri anlatmakta. Bu anlamsız kodlar metnin en az 4 en fazla 8 alfa nümerik karakterden oluşması gerektiğini temsil etmektedir.
Örnek Javascript Metodu:
1 <script language="javascript" type="text/javascript">
2 function validate(deger)
3 {
4 var regexfilter = /^.{6,10}$/;
5 var returnval=regexfilter.test(deger);
6 return returnval;
7 }
8 </script>
Sizler de bu teknolojiyi kullanmak isterseniz ama öğrenecek vaktiniz yok ise http://www.regexlib.com/ adresini ziyaret edebilirsiniz. Site içinde bir çok reg. ex. kalıbının yanı sıra ücretsiz reg. ex. tester bulunabilir. Yazdığınız kalıpların doğruluğunu test edebilirsiniz.
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Bu sabah üzerinde çalışmakta olduğumuz bir projenin çalışmakta olan cookie yazma okuma metodlarını kullanarak bir geliştirme yapmaya çalıştım. Enteresan şekilde browser kapatılıp tekrar açıldığında cookie kayboluyor ve yazdığım kod yapması gereken işlemleri yapamıyordu. Enteresan diyorum çünkü kullandığım cookie yazma ve okuma metodları sitenin bir çok yerinde kullanılıyor ve her hangi bir sorun yaşanmıyordu.
Kodu incelediğimizde gayet nizami görünüyordu.
1 var cookieToSetValue = new HttpCookie(CookieKeyName, CookieValue);
2 cookieToSetValue.Expires.AddDays(1);
3 HttpContext.Current.Response.Cookies.Add(cookieToSetValue);
Debug ediyor ve kodun doğru çalıştığını varsaydığımız için metodun içine girip bakmaya gerek görmüyorduk. Sonra sağolsun Burak Kardeşim metodun içine girmeyi düşündü ve expire date değerinin yanlış olduğunu fark etti. Böylece acımız da son bulmuş oldu.
Koddaki hata mevcut nesne üzerindeki sonlanma tarihinin üzerine birgün eklenmesiydi. Eğer burada bir tarih daha önce ayarlanmamış ise değer en küçük tarih değeri oluyor ve buna bir gün eklendiği için cookie otomatik olarak sonlanıyordu.
Düzeltmek için kurguyu biraz değiştirip günün tarihine bir gün ekle diyerek sorunu aştık.
1 cookieToSetValue.Expires = DateTime.Now.AddDays(1);
Kıssadan Hisse : Eğer cookileriniz kayboluyorsa önce Expires propertysine bakın :)
2 kişi tarafından 4.0 olarak değerlendirildi
- Currently 4/5 Stars.
- 1
- 2
- 3
- 4
- 5
Milliyet gazetesi Internet yazılım hizmetlerinde çalışmaya başladığımda arabam.com web sitesinin mevcut veritabanı ve sınıf kütüphanesi kullanılarak yeniden yazılamsı isteniyordu... .NET 1.1 de geliştirilmiş olan mevcut uygulamayı yeni teknolojilerle yazalım istedik... Visual Studio 2008 + .Net Framework 3.5 + MVC Framework Preview ile geliştirme yapma kararı alındı... Özellikle preview durumda olan bir framework kullanmak oldukça çılgın bir yaklaşımdı...MVC seçmemizin en büyük nedeni asp.net form ve viewstate kullanmıyor olmasıdı. Bu bir nevi ASP yıllarına geriş dönüştü bizim için. Ama bir farkla. .NET frameworkün gücü sonuna kadar bizimleydi.
Sitenin geliştirilmesi sırasında MVC framework tam 4 yeni preview daha yaptı :) Geçtiğimiz günlerde ise Release Candidate olan 1.0 versiyonunu kullanımıza sundu...
İlk görüşte aşk var ise MVC 1.0 bunu başarıyor... Geçmiş releaselerde bulunan eksiklikler yazılımcının hayatını kolaylaştıracak özelliklerle giderilerek çok daha rahat kullanılabilir hale gelmiş...
Release edilmesini sabırsızlıkla beklyorum... Sonrasında vakit bulursam konu ile ilgili yazılar yazmayı planlıyorum...
Sizler de bu arada resmi siteden gelişmeleri takip edebilirsiniz...
http://www.asp.net/mvc/
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Blog yapan yazılımcının dostu araçlardan olan CSAH (Copy Source As Html) bir Visual Studio 2008 eklentisi...
Eklenti yazdığınız kodlar için html ve stilleri oluşturuyor. Böylece web sitenizde ekstra çaba sarfetmeden kaynak kodunuzu internette IDE'nizde göründüğü gibi sunabiliyorsunuz.
Eklentinin 3.0 versiyonu yayınlanmış. 2.0 da yapamadığımız HTML bölümde yer alan kodları alamıyorduk... Bu özellik yeni versiyonda eklenmiş... Kurulum bilgileri, kullanım ve eklentiyi indirmek için aşağıdaki bağlantıyı takip edebilirsiniz...
http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Son günlerde Visual Studio 2008 ile çalışırken can sıkıcı bir hata mesajı almaya başlamıştım...
Hata mesajı "Error connecting to undo manager of source file 'x.aspx.designer.cs' derken bu mesajı debug etmek istediğimde veriyor olması çok anlamsız geliyordu... Anlamsız geldiği için anlamsız bir çözüm geliştirdim... İlgili dosya bi şekilde bozuluyor varsayımı ile bu dosyanın IDE tarafından oluşturulan bir dosya olduğu gerçeğini birleştirerek adı geçen dosyayı sildim... Daha sonra ilgili .ASPX dosyasına Visual Studio 2008 IDE ile Solution Explorer da ters tıklarak "Convert to Web Application" dedim ve dosyanın tekrar oluşturulmasını sağladım... Ve sorun çözüldü... Arada bir tekrar ediyor ve çözümü tekrarlıyorum...
Dosya neden bozulur, nedenini tam anlasam çok rahatlayacağım... :)
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5