CategoryAsp.Net

Update Panel içerisindeki Repeater da LinkButton kulanırken oluşan PostBack sorunu

U

Update panel içerisindeki repeater’ın itemtemplate’inde linkbutton kullanıyorsanız event gerçekleştiğinde (butona tıklandığında) ajax isteği yerine sayfanın komple post/postback olmasıyla karşılaşabiliyorsunuz. Ufak bir eklentiyle sorun giderilebiliyormuş, maalesef çözümünü bulmam saatlerimi aldı :)

Repater’ ın attribute lerine (taglerine,özelliklerine vb.) aşağıdaki kodu eklemeniz yeterli oluyor.

[csharp]ClientIdMode = "AutoId"[/csharp]

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

C

İlgili Hata:

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

Projenizde Structure kullandığınız da ve bu Structure’ın içeriği 256 byte üzerine çıktığında bu hata meydana gelebiliyor. En pratik ve geleceğe yönelik çözüm Structure yerine Class yapısı tercih etmeniz olacaktır. Alternatif olarak Structureları parçalayabileceğinizden de bahsedilmiş.

Sorunla ilgili MDSN blogunda yayınlanan makaleye aşağıdaki linkten ulaşabilirsiniz.

tıklayın.

Burada da farklı bir çözüm yolu anlatılmış, deneyebilirsiniz:

tıklayın.

Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib

C

Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib

tarzında bir hata alıyorsanız, bunun nedeni genellikle projenizin framework sürümünden farklı olan bir dll i projenizde kullanmanızdan oluyor.

Örnek vermek gerekiyorsa .NET Framework 4.0 ile yazdığınız bir proje Devexpress yada Telerik componentlerinin yada farklı bir eklentinin 4.5 ile derlenmiş sürümünü kullandığınızda bu hata meydana geliyor. Hatayı gidermek için kullanmış olduğunuz framework ile uyumlu olanları seçmeniz/bulmanız gerekmektedir.

Sys is undefined

S

Kafayı yedirten bir hata daha :) Tam 4 günümü harcadım…

İnternette çeşitli çözümleri mevcut hepsini tek tek anlatmayacağım, hepsini denediyseniz ve gerekli herşey kurulu olmasına rağmen yine de asp.net ajax çalışmıyor ise sunucunun tarih-saat ini kontrol edin. Eğer tarih ve saat hatalı ise asp.net ajax kontrolleri maalesef çalışmıyor, hala nedenini anlayamadım :)

Hatanın bir diğer nedeni ise web.config dosyanızdaki hatalı girdiler. Telerik yada devexpress kullanıyorsanız web.config dosyanızı silip tekrar oluşturun ve ilgili componentler için upgrade çalıştırın, web.config dosyanıza gereken değerleri tekrar ekleyecektir.

Too many characters in character literal

T

İş yerinde çalışırken delirmeme sebep olan bir hata :) Proje 2 dakika önce sorunsuz derlenirken birden bire bu hatayı verir oldu. Daha sonra kendiliğinden düzeldi ve ilerleyen zamanlarda yine bu hata ile karşılaştım :) Araştırmalarım sonucu hatanın 2 farklı nedenden ortaya çıkabileceğini ve 3 farklı şekilde çözülebildiğini buldum.

İlk olarak html kodlarımızda aşağıdaki gibi  bir yapı kullandıysak, yani Eval içerisinde çift tırnak kullanmak yerine dışında kullandıysak ortaya çıkabiliyor.

[csharp]Text="<%# Eval(‘kullaniciadi’) %>"[/csharp]

bunun yerine

[csharp]Text='<%# Eval("kullaniciadi") %>'[/csharp]

şeklinde bir yapı kullanmamız gerekiyor.

İkinci olarak form load ekranında aşağıdaki gibi bir yapı kullanırsanız bu hata ortaya çıkıyor.

[csharp]<form id="frmAnaSayfa" onload="alert(‘Merhaba!’)" runat="server">[/csharp]

Alternatif bir çözüm olarak ise “Build > Clean” yaptıktan sonra tekrar derlemeyi deneyebilirsiniz.

Build, Rebuild, Compile ve Clean Arasındaki Farklar

B

Hepimiz projemizi çalıştırmadan önce derliyoruz, derleme işlemini gerçekleştirmeden çalıştırsak dahi Visual Studio bizim yerimize derleme işlemini yapıyor. Aşağıdaki yazıdan derleme türlerinin neler olduğunu öğrenebilirsiniz. Yazılanlar Visual Studio için geçerlidir, geliştirme araçlarına göre farklılıklar gösterebilir.

Compile: Sadece editör de o an açık olan sayfayı derler.

Build: En son yapılan build işleminden sonra üzerinde değişiklik yapılan tüm dosyaları derler.

Rebuild: Herhangi bir durumu dikkate almaksızın projenin tamamını yeniden derler. Tüm proje yeniden derleneceğinden Build işlemine göre daha uzun sürecektir ancak build ile derleme sırasında oluşan hataları rebuild ile çözebilirsiniz.

Clean: Derleme sonrasında oluşan geçici ve kalıcı tüm dosyalar temizlenir. Bir sonraki derleme işleminde temiz bir başlangıç yapılır. Genellikle proje kodları bir başkasına gönderilmek istenildiğinde hem proje boyutunu ufaltmak hemde gereksiz dosyalardan kurtulmak adına tercih edilir.

Umarım faydalı olmuştur :)

[No relevant source lines]

[

[No relevant source lines]

Yukarıdaki saçma hata hiç birşeyi açıklamasa da yetki hatasından meydana geliyor :) Web.config dosyanıza Network Service yetkisini full olarak verirseniz sorun ortadan kalkıyor. Eğer yetki verdiyseniz ve sorun halen devam ediyorsa ASP.NET’ in temp klasörlerine de aynı yetkiyi vermeyi deneyebilirsiniz.

Visual Studio Hata Mesajlarının Dilini Değiştirmek

V

Web sitemizin yada programımızın farklı bir dilde hata vermesini isteyebiliriz. Özellikle bir hata ile karşılaştığımızda Türkçe kaynak sıkıntısı nedeniyle hatayı İngilizce olarak araştırıp çözüp bulmak çok daha pratik oluyor. Aşağıdaki kodu projenizin load aşamasında girerek hata mesajlarını istediğiniz dile çevirebilirsiniz.

[csharp]System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("En");[/csharp]

* En yerine istediğiniz dilin kısaltmasını yazabilirsiniz.

String was not recognized as a valid DateTime

S

String was not recognized as a valid DateTime

Yukarıdaki hata ile genellikle bir string veriyi datetime formatına çevirirken karşılaşıyoruz. Öncelikle datetime formatına çevirmek istediğimiz string verinin çevrilebilir bir şekilde geldiğinden emin olmalıyız.

Hatanın bir diğer nedeni ise sunucunun tarih formatının yanlış olması olabiliyor. Sunucunuzun bölge ayarlarından tarihin 15.06.2011 15:34 gibi olduğundan emin olun. Eğer bu şekildeyse ve sorun halen devam ediyorse web.config dosyamızda bir takım değişiklikler yaparak sorunu gidebiliriz.

Web.config te yapacağımız bu değişiklik ile yazılımımız/web sitemiz sunucunun saat ayarını değil web.config dosyasına girmiş olduğumuz saat ayarını kullanacak. Aşağıdaki kodları <system.web> içerisine yazmanız gerekmektedir.

[csharp]<globalization
culture="tr-TR"
uiCulture="tr-TR"
/>[/csharp]

Get in touch

Quickly communicate covalent niche markets for maintainable sources. Collaboratively harness resource sucking experiences whereas cost effective meta-services.