Kategori arşivi: C#, VB.NET, ASP.NET

Asp.Net, C#, Vb.Net uygulama örnekleri, ipuçları, .Net Framework 1.1 – 2.0 – 3.0 – 3.5 – 4.0 ile ilgili notlar

Tüm Veri Tabanlarından Erişilebilen Prosedür

Tüm veri tabanlarından erişilebilen prosedür yazmak için küçük bir düzenleme yapılması yeterlidir.

Birçok makalede SQL Server’de Stored Procedure isimlendirilmesinden “sp_” ile başlamaması tavsiye edilir. Bunun temel sebebi bu ön ek ile başlayan bir prosedür tam path bilgisiyle çalıştırılmadığı zaman öncelikle sisteme ait bir prosedürmüş gibi aranılır yani master veritabanının altında arama yapılır. Bu da zaman kaybı olduğu için “sp_” ile başlamaması tavsiye edilir.

Bu küçük detayı kendimiz için bir avantaja dönüştürebiliriz. Tüm veri tabanlarından erisilebilecek bir prosedür hazırlamak istersek master veritabanının altında “sp_” ile başlayacak şekilde isimlendirip CREATE etmemiz yeterli olacaktır.

CorFlags dönüştürme aracı

Visual Studio ile birlikte gelen CorFlags aracı PE image’a ait corflags section bölümünü dönüştürmek için kullanılır. Bu şu demek; bilindiği gibi .NET ortamında bir uygulama geliştirirken derleme işlemini istediğimiz 32-bit veya 64-bit ortamına göre gerçekleştirebiliriz. Bu durumda kullanılacak Assembly’ler ona göre aktifleştirilir. Yani uygulamayı 32-bit’e göre gerçekleştirirsek kütüphaneler aşağıdaki klasörden

…\WINDOWS\Microsoft.Net\Framework\v2.0.50727

64-bit’e göre gerçekleştirirsek aşağıdaki klasörden okunur.

…\WINDOWS\Microsoft.Net\Framework64\v2.0.50727

.NET Framework’ün kendisinde olmayan bir Assembly’i kullanmışsak bunu uygulamanın config dosyasında belirtmemiz gerekiyor. Aynı şekilde 64-bit makinelerde türüne göre GAC_32, GAC_64 ve GAC_MSIL Global Assembly Cache klasörleri mevcuttur. 32-bit ortamlarda sadece GAC_32 ve GAC_MSIL klasörleri bulunur. GAC_MSIL klasörü platformu belirsiz yani AnyCpu olarak derlenmiş Assembly’leri içerir.

Bir uygulamayı aşağıdaki seçeneklere göre derleyebiliriz;

Anycpu – platform belirsiz
x86 – 32-bit platform
x64 – x64 platform
itanium – IA platform

.NET derleyicisi default olarak uygulamayı anycpu türünde derler. Bu da o uygulamanın hem 32-bit hem de 64-bit ortamında çalışabileceğini belirtir. Bu nedenle portable assembly olarak isimlendirilir.

Fakat bazı durumlarda hazırladığımız bir uygulamanın mutlaka belli bir platformda örneğin ne olursa olsun hep 32-bit çalışmasını istediğimizde bu dönüştürmeyi CorFlags aracı ile gerçekleştirebiliriz.

Ben bu aracı daha çok bir Assembly’nin hangi platformda kullanılabileceğini öğrenmek için kullanıyorum. CorFlags şeklinde komutu çalıştırdıktan sonra aşağıdaki gibi bir sonuç elde edilir.

Version : v4.0.30319
CLR Header: 2.5
PE : PE32+
CorFlags : 0x9
ILONLY : 1
32BITREQ : 0
32BITPREF : 0
Signed : 1

Bu alanlar uygulamanın hangi .NET Framework versiyonunda built edildiğini, CLR versiyonunu gibi bilgileri belirtir. Örneğin bu dosya için PE değerinin PE32+ olması bu assembly’nin 64 bit olduğunu gösterir.

CorFlags aracını kullanmak için Visual Studio Command Prompt üzerinden çalıştırmak gerekir.

VS – JScript Editor Extensions

Visual Studio gibi başarılı bir editörün özellikle 2010 sürümünden sonra geliştirilen eklentileri programcılar için önemli kolaylıklar sağlamaktadır. Fakat çoğu zaman editörü yavaşlattığı için zorunlu olmadıkça bu eklentileri yüklemiyorum. Fakat geçenlerde Java Script tarafında code-behind tarafındaki #region ifadesine benzer bir yöntemin olup olmadığını araştırırken Microsoft’un çıkardığı “JScript Editor Extensions” isimli extension çok işimi gördü. Bu sayede Java Script tarafındaki parantezlerle boğuşmamış olacağız. Daha kolay iç içe kod yazabileceğiz.

Bu sorun için macro çözümleri de geliştirilmiş ancak çok ilgimi çekmedi. Araçla ilgili detaylar aşağıdaki adreste bulunmaktadır;
https://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed

JQUERY – ASP.NET POST işleminde Türkçe Karakter Sorunu

JQuery aracılığıyla bir formu ASP.NET sayfasına doğrudan POST veya GET ile gönderebilmek için Form Serialize işlemi gerçekleştirilir. Bu amaçla .serialize() veya .serializeArray() yordamları kullanılır.
Özellikle Internet Explorer ortamında bir formu serialize edip ASP.NET sayfasında okumaya çalıştığımızda Türkçe Karakter sorunu yaşanmaktadır. Örneğin “öçşğüİ” değeri öçÅ?Ä?Ã¼Ä şeklinde görünmektedir. Bu karakterlerin UTF-8 olarak gönderilmesi için aşağıdaki örnekte gösterildiği gibi “application/x-www-form-urlencoded; charset=utf-8¨ şeklinde content teype belirmek gerekiyor.

var formValue=$("#aspnetForm").serializeNoViewState();

$.ajax({
	type: "POST",
	url: "OrnekSayfa.aspx?Prm=1",
	data: formValue,

	beforeSend: function (xhr) {
	    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
	},

	contentType: "application/x-www-form-urlencoded; charset=utf-8",
	dataType: "json", 

	success: function (msg, status) {
		alert(msg);
	},
	error: function (xhr, msg, e) {
	    alert("Hata Oluştu!\n" + xhr.responseText +"\n"+msg );
	},

	complete: function() {
		alert('İstek başarıyla gönderildi.');
	}
});

ASP.NET requestValidationMode ayarı

ASP.NET sayfasına POST işlemi yaptığımızda post edilen metin içerisinde “<>” gibi web safyaları için tehlike oluşturabilecek değerler gönderildiği zaman ASP.NET WP, “A potentially dangerous Request.Form value was detected from the client” hatasını fırlatır. Bu hatayı engellemek yani kullanıcının bu tür değerleri girmesine izin vermek için ASP.NET sayfasının tanımlama satırına validateRequest=”false” ibaresi yazılır. Aynı şekilde uygulamadaki tüm sayfalar için bu ayarın geçerli olması için Web.Config dosyasına aşağıdaki gibi ekleme yapılabilir. Cross-site scripting (XSS) attack riskini engellemek için ASP.NET tüm sürümlerinde request validation özelliği varsayılan olarak aktifdir. ASP.NET’in önceki sürümlerinde bu doğrulama işlemi sadece ASPX sayfaları için yapılmaktaydı. 4.0 sürümüyle birlikte doğrulama işlemi doğrudan BeginRequest aşamasında devreye alınacak şekilde düzenlendi. Böylece uygulamaya gelen tüm istekler için yani sadece ASPX sayfaları değil, Web Servisi çağırma, HTTP handler çalıştırma gibi tüm ASP.NET kaynaklarına istek gönderildiği zaman doğrulama işlemi devreye alınmış oldu.
Bazı durumlarda .NET Framework 4.0 altında eski sürüm ugyulamalarını çalıştırma durumumuz olabilir. Bu durumda hangi sürüm algoritmasının kullanacağını belirtmek için requestValidationMode niteliği kullanılır.


UML ve UML Diyagramları – II

Bağıntı/İlişki Sınıfları (Association Classes)
Bağıntı sınıfı, iki nesne arasında kurulmuş bağıntı ile başka bir sınıfın ilişkilendirilmesidir. Bu yöntem ana nesneler arasındaki bağıntının kendisine yeni nitelikler kazandırmak için kullanılır. Örneğin öğrenci-ders bağıntısında öğrencinin kayıt tarihi, kayıt ücreti ve kredisi gibi nitelikler ancak öğrenci o derse kayıt olduktan sonra anlam kazanır. Bu nitelikleri bağıntının kendisine tanımlamak gerekir. Diyagram üzerinde bağıntı sınıfları bağıntıya kesik çizgi ile bağlanır. Okumaya devam et

UML ve UML Diyagramları – I

Bir yazılım projesinde herşeyden önce o proje ile ilgili yol haritası olan proje taslağı oluşturulmalıdır. Proje taslağı onun başarısıyla doğru orantılı olup projenin zaman ve iş gücü açısından verimli sonuçlanmasını sağlar. Bu yöntem aynı bir inşaat projesinde olduğu gibi bir yazılım projesinde de başarı faktörü olarak karşımıza çıkar. Proje/iş tasarlamanın ilk adımı proje içerisindeki aktif oyuncuların anlayabileceği standart bir modelleme yapmaktır. Bir mühendislik yaklaşımı olan modelleme, karmaşık bir sistemin şekil ve metinlerle basit bir dil ile ifade edilmesidir. Okumaya devam et

CETURK “Microsoft Teknolojileri Etkinliği”

CETURK, 7 Şubat Cumartesi günü Microsoft Türkiye İstanbul Ofisi’nde benim de Ado.Net 3.5 / Ado.Net Entity Framework konusuyla konuşmacı olarak katıldığım Microsoft Teknolojileri Etkinliği‘ni düzenledi. Benim açımdan iş ve sosyal hayat olarak yoğun bir haftaya denk gelmesi, hediye olarak verdiğimiz kitapları yetiştirmek için ciddi bir zaman harcamış olmam ve bunun sonucunda kendi sunum saatine yetişemememden dolayı etkin bir performans sergileyememiş olsam da benim için faydalı oldu. Konu katılımcı profiliyle ne kadar uyuştu veya onların ne kadar ilgisini çekti bilemiyorum ancak birkaç arkadaşın bu konularda ürün çıkaracak kadar çalışıyor olmaları beni daha da cesaretlendirdi. Tüm katılımcılara ve etkinliği düzenleyen CETURK ekibine de teşekkür ederim. Oturumumla ilgili sunumu aşağıda bulabilirsiniz.

Etkinlikle ilgili detayları https://www.ceturk.com/etkinlikkayit.asp?id=63 adresinde bulabilirsiniz.

Web Kontrol Geliştirme – III [Rendered Control]

Özel şekillendirilmiş kontrol olarak tanımlayacağımız bu kontroller, Control veya WebControl sınıflarından doğrudan türetilmiş olup, programcı tarafından belirlenmiş HTML içeriği render eder. WebControl sınıfı, Control sınıfından inherit edilmiş olup Control sınıfının özellikleriyle beraber kontrollerin renk, font gibi görsel yönlerinin yönetilmesini sağlayan özellikler sunar. Bu yöntemle geliştirilmiş kontrolün tag yapısını ve içeriğini genellikle programcı HTML ifadeler yazarak oluşturur. Bunu da daha önce kendisinden bahsettiğimiz HtmlTextWriter nesnesi aracılığıyla yapar. Bu bölümde daha detaylı göreceğimiz HtmlTextWriter sınıfı, kontrolleri render edip HTML çıktısını oluşturma, elementlere ait attribute tanımlamaları yapma, style attribute oluşturma gibi servisleri sağlar. Okumaya devam et