Archive

Archive for the ‘ASP.NET’ Category

.NET Platformundan Windows Fax ile Faks Göndermek

August 5th, 2010 10 comments

Bir müşterimizin isteği/ihtiyacı ile geliştirdiğimiz internet tabanlı uygulamanın, doğrudan faks göndermesi ihtiyacı doğdu. İlk önce uzunca bir süre farklı Fax Server arayışlarında bulundum. Ancak Windows platformu için başarılı (mümkünse açık kaynak kodlu veya ücretsiz) bir Fax Server bulmak mümkün olmadı.
Daha sonra odağımı, Windows’un kendi faks çözümü olan Windows Fax’a kaydırdım. Biraz araştırma sonrası, faxcom.dll kütüphanesi aracılığı ile (Windows 2000 kurulu bir bilgisayarın c:\WINNT dizininden bulabilir veya Windows 2000 CD’sinden deflate edebilirsiniz) gönderim yapmanın mümkün olacağını öğrendim. Çok umutlu olmasam da denemelere başladım. İlk önce denemeleri bir masaüstü uygulamada yaptım. Aşağıdaki kod parçasıyla yaptığım denemeler kesin bir başarıyla sonuçlandı;

FaxServerClass fs = new FaxServerClass();
fs.Connect(machineName);
object obj = fs.CreateDocument(documentPath);
FaxDoc fd = (FaxDoc)obj;
fd.FaxNumber = dialPrefix + faxNumber;
fd.SenderName = senderName;
fd.RecipientName = recName;
int result = fd.Send();
fs.Disconnect();
fs = null;

Kodda kullanılan değişkenler;

  • documentPath: Faks gönderilecek dokümanın tam yolu.
  • machineName: Windows Fax’ın kurulu olduğu makinenin adı. Aynı makine üzerindeyseniz Environment.MachineName de kullanabilirsiniz (sadece desktop uygulamalarında)
  • dialPrefix: Faks gönderileri santral üzerinden çıkacaksa ihtiyaç duyacağınız hat alma ön eki.
  • faxNumber: Alıcı faks numarası.
  • senderName: Gönderenin isim bilgisi (faks ile beraber gönderiliyor).
  • recName: Alıcının görünecek ismi (faks konsolunda görünür).

Bu basit kod parçası ile geliştirme ve deneme ortamım Windows 7′de faks gönderimi başarıyla sonuçlandı, faks kuyruğuna dokümanlarım düştü. Daha sonra web uygulaması üzerinden denemeler başladım. Aşağıda bahsedeceğim bir kaç yetki probleminden sonra onda da (Windows 2003 üzerinde) tam başarı elde ettim. Ancak bazı noktaları belirtmekte fayda var;

  1. Faks göndermek istediğiniz dokümanın faks olarak gönderilebilmesi için, bu format ile birlikte açılmaya ayarlanmış bir uygulamanın kurulu olması gerekiyor. Aynı zamanda bu uygulamanın Shell-Print destekliyor olması gerekiyor. Küçük bir tavsiye; göndereceğiniz formatı açıp yazdıran uygulamayı ne kadar hafif seçerseniz o kadar az kaynak kullanırsınız. Örneğin PDF’te Adobe Acrobat’ın bazen bellekte kaldığına şahit oldum.
  2. Gönderimi yapacak faks sunucusunun normalde aynı makinede olması gibi bir zorunluluk söz konusu değil. Fully-qualified ağ adı sağladığınız sürece bu kodun çalışması beklenir. Ancak ben yaptığım hiç bir denemede farklı sunucuya erişim için gerekli yetki ayarlarını bulamadım. E_ACCESSDENIED hatasından öteye gitmem mümkün olmadı. Büyük ihtimalle RPC tüneli gereken bu uygulama için eğer zorunlu değilseniz çok uğraşmayın derim. Eğer çözümünü bulup yorum olarak postalayan olursa da memnuniyetle yayınlarım.

    Aynı makine üzerine kurulu bir ASP.NET web uygulamasından aynı kodla gönderim yapmak istediğimde yine E_ACCESSDENIED hatası aldım. Impersonation ile sorunu çözmeye muvaffak olamayınca kurulu faksın yetkileri ile ilgilenmeye başladım ve çözüme ulaştım. Windows 2003′te, “Printers and Faxes” üzerinden eriştiğim Faks simgesine çift tıkladığınızda görüntülenen konsoldan “Tools” menüsünden “Fax Service Manager…” seçin.

    Daha sonra açılacak “Microsoft Fax Service Manager” üzerinde, kök “Fax (Local)” yaprağını bulup sağ tık ile “Properties” ekranına erişin ve “Security” sekmesinden, ekleyeceğiniz “NETWORK SERVICE” kullanıcısına yetki verin. Web uygulaması olduğu için bu kullanıcıyı seçtik. Farklı bir uygulama olsa çağıdan kullanıcıyı seçecektik tabi ki. Bu ayardan sonra Windows 2003 üzerinde ASP.NET uygulamam da sorunsuz olarak faks gönderebilmeye başladı. Ancak bu çözümü Windows 7 üzerinde uygulama şansım olmadı, zira “Microsoft Fax Service Manager”a karşılık gelen uygulamayı bulamadım. İhtiyacım olan Windows 2003 olduğu için bu çözüm bana yeterli oldu.

  3. Faksı santral üzerinden çıkacaksanız ve hat alma ön eki kullanıyorsanız, ön ekten sonra çevir sesini beklemek için bir veya daha fazla defa virgül (,) kullanmanız gerekebilir. Kaç virgül kullanacağınızı santralinizin hat verme hızına göre tespit etmelisiniz. Bir virgül yaklaşık 0.5 saniye beklemeye sebep oluyor. Yani çevirdiğiniz faks numarası sonuç olarak (prefixiniz 9 ise) 9,,,4445566 gibi olmalı. Bu örnek yaklaşık 1.5 saniye hat bekleyecektir.
  4. Alıcı ve gönderici isimlerinin gönderi üzerinde çıkıp çıkmaması, hem sizin fax-modem kartınıza, hem de alıcı cihazın özelliklerin bağlı. İki bilgi de çıktıya eklenebileceği gibi ikisi de görünmeyebilir.
  5. Faks nesnesinde benim burada değinmediğim daha bir çok seçenek mevcut (kapak sayfasından alıcı/gönderici detay bilgilerine kadar). Bunları da gözden geçirmenizi tavsiye ederim.

Son olarak belirtmek istediğim bir nokta var. Normalde fax server’a faksı basmak senkron bir işlem değil. Asenkron olarak komut basılıp geçiyor. Ancak uygulamalarımda şunu gördüm ki; faks servisinin durumuna, dokümanın büyüklüğüne vb. göre faks’ın kuyruğa basılması kimi zaman bir kaç saniyeyi geçebiliyor. Bu yüzden uygulamalarda faks gönderimini (işlem unattanded gerçekleşecekse) doğrudan yapmak, uygulamanın yavaşlamasına ve web uygulamlarının zaman aşımına düşmesine sebep olabilir. Bunun önüne geçmek için bir Windows servis veya periyodik çalışacak bir konsol uygulaması geliştirmeyi düşünebilirsiniz.

Müşterimiz için olan uygulamamızda ben bunu tercih ettim. Windows servisin bakım ve idamesi daha zor olduğu için bir konsol uygulaması yapıp, bunu “Scheduled Job” ile periyodik çalıştırıp bir dizinde çekilecek faksları tarayıp göndermeyi tercih ettim. Size de tavsiyem bu yönde olur.

Umarım siz de yandaki gibi dolu bir faks konsolu giden kutusuna sahip olursunuz.

Herkese keyifli fakslamalar :)

An ASP.NET, IIS 7.5 story on Windows 7..

February 14th, 2010 No comments

I’m nearly-fully satisfied with the Windows 7, that I began to use at home nowadays. To be honest, I can say that I’m an addict of it because of performance.

Or “was”. Until it took 1 hour and 40 minutes to make a website working on IIS.

I didn’t expected it to be so smooth but I never guessed a bloody ending like this. I created my site as usual and wanted to see the empty page immediately. When I came by IIS 7.5 and see the jelly-candy interface, I felt that things will not do good. Anyway I defined the website and went to the browser and firs error:

ERROR 1: HTTP Error 500.19 / Error Code: 0×80070005 / Config Error: Cannot read configuration file due to insufficient permissions

Inspection phase began of course. It was obvious that this is an access problem. I permitted the IIS_IUSRS user to access web project folder. I Refreshed the page in browser and second error:

ERROR 2: HTTP Error 500.19 / Error Code: 0×80070021 / Config Error: This configuration section cannot be used at this path. This happens when the section is locked at parent level….

This was the most educating error in this story. Though the things I’ve learnt was not related with the error… After some research, I’ve found out an easy way.
Opening the file at location %windir%\system32\inetsrv\config\applicationhost.config and to change the “Deny” words into “Allow” in this portion:

<section name="handlers" overrideModeDefault="Deny" />
<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />

By this way, I will be allowing sections to be overwritten in web.config.
It’s an easy thing to do but if you can find the file… I immediately switched to my Total Commander, navigated to path, and what? directory is empty? look around it’s empty? Then I switched to cmd. Navigated to path, nothing.
Then I learned the thing “SYSWOW32 Redirection” from a forum. In 64Bit operating systems, there are two system folders. One System32 and one SysWOW64. But because all software will try to access to system folder in same way, Microsoft redirects 32bit applications to 32Bit system folder by “SYSWOW32 Redirection”. This means if you use an 32bit application to view the folder (Total Commander and cmd in my case) the folder shows empty, because the folder is not actually that folder.
After I got this, I switched to 64bit Notepad and managed to open and change the file by pointing to it with full path. Returned to browser, refreshed and here comes the 3rd error:

ERROR 3: HTTP Error 401.3 / Error Code: 0×80070005 / Unauthorized

After a long research, I found out that the problem is related with site authentication in IIS 7.5. It’s needed to follow these steps in order to correct it:
1. Go to IIS7.5,
2. Expand “Sites” node, click the problem web site’s name.
3. Double click “Authentication” on the right.
4. Right click on “Anonymous Authentication” item and click “Edit…”.
5. Check the “Application Pool Identity” option
6. Save it.
I’ve completed all steps, returned to browser expecting “it’s ok this time”, F5 andddd

ERROR 4: HTTP Error 404.3 / Error Code: 0×80070032 / Not Found

I thought that ASp.NET handler is not working but how to find and correct in this jelly-candy IIS7.5? I began searching for it this time. I found out where the handlers are but no one was knowing about ASP.NET handlers over there. I then learned that requires manual activation of ASP.NET components even if you have Framework installed. For this, we go to “Programs and Features” from Control Panel and then say “Turn Windows Features on or off”. Then in the appearing tree, we go to this node: “Internet Information Services/World Wide Web Services/Application Development Features”. Then we pick all items here except “CGI”.

After completing these steps, I’ve refreshed browser then an error more. But this time I began to get good-old yellow error pages of ASP.NET. It was a meaningless error but I tried to compile project once more. Then it healed and lastly I managed to see my white good and empty Default.asp page…

These issues are not lived on an operating system installation that is screwed up and is living for ages. Operating system was 3-4 days old and Visual Studio installation was just 1 days old. In other words, platform was nearly out-of-the-box.

I hope this story heals somebody’s problems out there…

NicEdit ve C#

December 30th, 2009 2 comments

Geçtiğimiz günlerde yaptığımız bir proje için basit ama yetenekli bir HTML editor ihtiyacımız oldu. Bundan önce bir çok seçenek denemiş ve değerlendirmiştik. Genellikle basit olanların özellikleri yetersiz, yetenekli olanalrda çok ağır ve hantal çalışmaktaydı. Ancak projenin doğası gereği ihtiyacımız hem implementasyonu hem de kendisi hafif, aynı zamanda da “dosya yükleme” gibi (nispeten) ağır işlemleri yapabilen bir bileşene ihtiyacım oldu.

İnternette yaptığım aramada, NicEdit’in (http://nicedit.com) güzel bir seçenek olduğunu gördüm. Özellikle, jQuery tarzı, sadece ihtiyacınıza göre özelleşebilen, daha küçük boyutlu js dosyaları alabildiğiniz yapısı, hem altyapının gücünün hem de başarılı bir bileşenin habercisiydi.

Gerçekten de bileşeni uyguladığımda, hem hafif hem de başarılı olduğu konusundaki fikrimde yanılmadığım ortaya çıktı. Tek sorun, dosya yükleme konusundaydı. Aslında içindeki dosya yükleme rutininde herhangi bir sorun bulunmuyor. Varsayılan ayarlarla kurulum yaptığınızda, resimleri ImageShack üzerinde host ederek, güzel bir yükleme arabirimiyle işini doğru şekilde yapıyor. Ancak uygulamamın tarzı sebebi, resimlerin ImageShack üzerinde değil, kendi sunucumuzda tutulması gerekiyordu. NicEdit, parametrik olarak yükleme işlemlerini farklı bir adrese yönlendirme opsiyonu sağlıyor. Bunun için de örnek olarak bu özelliği karşılayacak bir sayfa sunulmuş. Ancak örnek sayfa PHP ile kodlanmıştı. Benim tabi ki C# koda ihtiyacım vardı. PHP’den hiç anlamadığım için, kodu okuyarak çözmek yerine, gelen giden istekleri takip edip Firebug yardımıyla çalışma mantığını çözmeye karar verdim. Sonuç olarak NicEdit ile uyumlu çalışan, C# tabanında bir dosya yükleme karşılama sayfası yapmayı başardım.

Doğrusunu söylemek gerekirse bütün özellikleri desteklemedim. Örneğin yükleme yüzdesinin ne kadar olduğunu gösteren özelliği implemente etmedim. Aslında mümkündü ancak ihtiyacım olmadığı için yapmadım. “Dosya yükleniyor” ibaresi benim için yeterliydi. Gönderilen cevaptaki bütün parametreleri de incelemedim. Sadece kendime yarayacak kısımları düzelttim, geri kalanları sabit olarak gönderdim.

Eğer siz de bir ASP.NET projesinde dosya yükleme özelliği ile NicEdit kullanmak istiyorsanız, yaptığım basit geliştirmeyi SVN üzerinden svn checkout http://nicedit-csharp-fileupload.googlecode.com/svn/trunk/ nicedit-csharp-fileupload-read-only komutuyla checkout edebilirsiniz. Web üzerinden de http://code.google.com/p/nicedit-csharp-fileupload adresinden projede gezinebilirsiniz. Yükleme işlemi tek bir aspx dosyasında yapılıyor. General.cs dosyası içerisindekiler ise, yükleme işlemlerinin listesinin tutulduğu bir class. Ayrıca fark edeceğiniz gibi bazı parametreler web.config’den alınıyor. Onları da konfigüre ettiğinizde kullanıma geçmeniz 2-3 dakikanızı alacaktır.

Umarım işinize yarar…

Categories: ASP.NET, C# Tags: , , , ,

Windows 7′de bir ASP.NET, IIS 7.5 hikayesi..

December 10th, 2009 8 comments

Bir süredir evde kullanmaya başladığım Windows 7′den oldukça memnun sayılırım. Hatta kısa sürede özellikle performansından dolayı fanatiği oldum diyebilirim.

Diyebilirdim yada. Bugün IIS üzerinde bir websitesini çalıştırmak tam 1 saat 40 dakikamı alana kadar.

Acısız olmasını beklemiyordum ama bu kadar kanlı olmasını da beklemiyordum açıkçası. Her zaman yaptığımız gibi sitemi oluşturdum, hemen görmek istedim boş sayfayı. IIS’i açtığımda IIS 7.5′un jelibon-bonbon yüzünü görünce işlerin iyi gitmeyeceği içime doğmuştu zaten. Neyse, websitesi tanımlamasını yaptım. Tarayıcıya yöneldim ve ilk hata:

HATA 1: HTTP Error 500.19 / Error Code: 0×80070005 / Config Error: Cannot read configuration file due to insufficient permissions

Araştırma süreci başladı tabi ki. Sorunun yetki hatası olduğu belliydi. Web projesinin dizinine IIS_IUSRS kullanıcısına yetki verdim. Tarayıcıda sayfayı refresh ettim ve ikinci hata:

HATA 2: HTTP Error 500.19 / Error Code: 0×80070021 / Config Error: This configuration section cannot be used at this path. This happens when the section is locked at parent level….

En fazla bilgi öğreten hata bu oldu. Her ne kadar öğrendiklerim hata ile ilgili olmasa da… Araştırmalar sonucunda kolay bir çözümü olduğunu öğrendim.
%windir%\system32\inetsrv\config\applicationhost.config konumundaki dosyayı açıp, içerisindeki

<section name="handlers" overrideModeDefault="Deny" />
<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />

satırlarındaki “Deny” ibarelerini “Allow” yapmak. Bu sayede bu section’ların web.config üzerinden override edilmesine izin vermek.
İşlem kolay, kolay olmasına da dosyayı bulabilirsen… Hemen Total Commander’ıma geçtim, dizine gittim, o da ne, dizin boş? Ara tara boş. Hemen cmd’ye geçtim. Dizine gittim yok da yok.
En sonunda bir forumda “SYSWOW32 Redirection” denen bir zımbırtıyı öğrendim. 64Bit işletim sistemlerinde, sistem dizini iki adet. Bir System32 bir de SysWOW64. Ancak bütün yazılımlar sistem dizinine aynı şekilde erişmek isteyeceği için, Microsoft, 32 Bit’lik yazılımlar sistem dizinlerine erişirken “SYSWOW32 Redirection” ile onları 32Bit dizinine atıyor. Yani dizine gözatmak için kullandığınız yazılım (bende Total Commander ve cmd) 32 bit ise, dizinde hiçbirşey olmuyor, çünkü o dizin o dizin olmuyor.
Bunu da öğrendikten sonra 64Bit’lik Notepad ile tam dosya adresi vererek dosyayı açmaya muktedir oldum ve değişiklikleri yaptım. Tarayıcıya döndüm, refresh veee buyrun 3. hata:

HATA 3: HTTP Error 401.3 / Error Code: 0×80070005 / Unauthorized

Uzun araştırmalardan sonra, sorunun IIS7.5 üzerindeki site yetkilendirmesindeki bir sorun olduğunu tespit edebildim. Düzeltmek için şu adımları izlemek gerekiyor:
1. IIS7.5′a girilir,
2. “Sites” dalı genişletilir, sorunlu web sitesinin adına tıklanır.
3. Sağ taraftan “Authentication”a çift tıklanır.
4. “Anonymous Authentication” öğesine sağ tıklanır “Edit…” denir.
5. “Application Pool Identity” seçenği işaretlenir
6. Kaydedilir.
Adımları tamamladım, büyük bir hevesle “bu sefer tamam” diyerek tarayıcıya döndüm F5 veeee 4.hata:

HATA 4: HTTP Error 404.3 / Error Code: 0×80070032 / Not Found

Hata mesajından ASP.NET handler’ının çalışmadığını düşündüm ama, jelibon-bonbon IIS7.5′da nasıl bulasın da düzeltesin handlerları. Bu sefer onu aramaya başladım. Handlerların yerini tespit ettim ama ASP.NET handler’larının yerinde yeller esiyordu. Meğerse Windows 7, Framework kurulsa dahi, ayrı ASP.NET bileşenlerini aktive etmeyi gerektiriyor. Bunun için denetim masasından “Programs and Features” altından “Turn Windows Features on or off” diyoruz ve çıkan ağaçta şu dala kadar gidiyoruz: “Internet Information Services/World Wide Web Services/Application Development Features”. Buradaki öğelerden, “CGI” hariç diğerlerini işaretliyoruz.

Bu işelmi de tamamladım tarayıcıda refresh, yine bir hata. Ama bu sefer ne güzel ki artık sarı ASP.NET hata sayfası görebilmeye başlamıştım. Anlamsız bir hataydı ama bir compile edeyim projeyi tekrar dedim. Netekim düzeldi ve boş, düz beyaz Default.aspx sayfamı görmeyi başardım…

Yukarıda anlattığım sorunlar, orası burası kurcalanmış yada uzun süredir kullanılarak sorunlara yol açılmış bir Windows kurulumnda değil, 3-4 gün önce yeni işletim sistemi ve 1 gün önce de yeni Visual Studio 2008 kurulumu ile tam manasıyla bir out-of-the-box sistem üzerinde meydana geldi.

Umarım bu sorunları yaşayan birilerin biraz faydam dokunur…

CheckBoxList’e Hover Tooltip

November 23rd, 2009 1 comment
Bir ASP.NET projemizde, CheckBoxList içerisindeki her bir işaret kutusunun açıklamasının mouse işaret kutusu üzerine geldiğinde tooltip olarak çıkması yönünde bir ihtiyaç başgösterdi. Teknik olarak CheckBoxList içerisindeki her bir kayda ayrı ayrı standart tooltip vermek mümkün değil.
Aklımıza gelen ve sırayla uyguladığımız üç çözüm seçeneği şunlar oldu:
  1. CheckBoxList kullanımından vazgeçip, alanı repeater’a çevirmek istediğimiz gibi özgür olmak.
  2. Bir javascript array içerisinde ilgili açıklamaları ve ID’leri tutup, sayfa yüklendiğinde prototype.js ile (projede prototype kullanılıyor) bunları tooltip’e çevirmek.
  3. Soruna bir CSS yaklaşımı ile çözüm aramak.
İlk seçeneği, projenin bulunduğu durum, bu checklist’in sayfada ve codebehind’da kullanım durumu vs. göz önünde bulunarak ilk etapta eledik. Ardından ikinci çözüm için çalışmaya başladık ve bu çözümü gerçekleştirdik. Ancak sayfada bu işlemin uygulanacağı çok fazla sayıda checkbox olduğu için (yaklaşık 1000 adet) çözüm istediğimiz performansı sağlamadı. Sayfanın açılışı, JS çalışmasından dolayı 10 saniye kadar yavaşladı.
İki başarısız girişimden sonra CSS seçeneğini değerlendirmeye başladık. Asıl yazı amacıma yavaş yavaş yaklaşıyoruz. Burada isteğimizi gerçekleştirmek için 3-5 satırlık bir CSS yeterli oldu. Sonuçta elde ettiğimiz çıktı, CheckBoxList kullanılan her yerde kullanılabilecek bir çözüm oldu. Tek ön koşul var: CheckBoxList’teki her bir nesnenin açıklamasının normalde görüntülenmiyor olması. Örnek olarak şu görüntüye bakabilirsiniz:
Eğer checkboxların açıklamaları buradaki gibi görünmüyorsa, bunları tooltip olarak değerlendirebiliriz. Checkboxlist’i normal şekilde bind ediyoruz. Bu durumda görüntü şu şekilde oluyor:

İlk önce checkboxlist’imize bir class atıyoruz (.NET tarafından CssClass). Örneğin bu class chkOptionHover olsun. Şu şekilde bir style ekliyoruz:
table.chkOptionHover td label
{
display:none;
}

Bu sayede checkboxlistteki her bir checkbox’a ait açıklamalar görünmez hale geliyor. Bir önceki style’da belirttiğimiz td’nin hover’ına bir class daha vererek üzerine geldiğimizde açıklamaların görünmesini sağlıyoruz.

table.chkOptionHover td:hover label
{
position:absolute;
display:block;
}

Belirttiğim style eklendikten sonra mouse over efekti şu duruma geliyor:

Her ne kadar görsel olarak kullanılabilir olmasa da isteğimiz aslında teknik olarak gerçekleşmiş durumda. Bir kaç küçük CSS dokunuşu ile label’larımızı gerçek birer tooltip’e döndürüyoruz. Bunun için sadece :hover class’ına bazı eklemeler yapıyoruz. Tabi ki istediğiniz şekilde görsel oluşturabilirsiniz. Bu benim tercihim:

table.chkOptionHover td:hover label
{
font-size:10pt;
font-weight:bold;
padding:5px;
position:absolute;
background-color:yellow;
-moz-border-radius:3px;
-webkit-border-radius:3px;
display:block;
}

Yukarıdaki uygulamalardan sonra artık tooltip’imiz oturmuş duruma geliyor ve aşağıdaki gibi bir görüntü oluşuyor:

Gerçek bir tooltip’e benziyor değil mi? Uygularken Checklist’e class verip yukarıdaki satırları eklemek dışında da bir geliştirme gerektirmiyor. Ön koşulların sağlandığı durumlarda oldukça uygulanabilir bir çözüm olduğunu düşünüyorum. Ayrıca IE, Firefox ve Chrome (webkit) uyumlu olarak çalışıyor. Tarayıcıdan tarayıcıya tooltiplerin konumları değişebiliyor, ancak hepsi kabul edilebilir sınırlar içerisinde kalıyor. Arzuya göre genişlik de belirterek daha tooltip-benzer bir görüntü de elde edilebilir. Ötesi CSS yeteneklerinize kalmış…

Umarım sizin de işinize yarar…

Categories: ASP.NET, CSS, HTML Tags: , , , ,

ASP.NET 4.0 URL Routing

October 17th, 2009 No comments

ASP.NET 3.5′ta bazı uygulamaları yapılmıştı ancak özellikle performans sorunları sebebiyle pek tercih edilmemişti. Ayrıca sadece SP1′li sistemlerde çalışması da bir sorundu. ASP.NET 4.0 daha temelden bir çözüm getiriyor gibi görünüyor. 3.5′taki geliştirmeye de oldukça benziyor.

http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx

ScottGu’nun blogundan okuyalım…

Categories: ASP.NET Tags: , ,