CategoryAsp.Net

A potentially dangerous Request.Form value was detected from the client

A

A potentially dangerous Request.Form value was detected from the client
Zararlı olabilecek bir değer Request.Form algılandı

yukarıdaki hatalardan birini alıyorsanız büyük ihtimalle HTML formatında bir girdiyi sunucunuza kaydetmeye çalışıyorsunuzdur. Yukarıda yazdığım hata ASP.NET’ in bir güvenlik özelliğidir. Sisteminize Sql Injection yapılmasına yada veritabanınıza zararlı kod yerleştirilmesine engel olmaktadır.

Bazı durumlarda (yönetim panelinden html girdisi gibi…) bu güvenliği devre dışı bırakmamız gerekebilir. Aşağıda yazmış olduğum kodları kullanarak bu güvenliği kapatabilirsiniz.

Tüm sitede güvenliği kapatmak için:

[csharp]<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>[/csharp]

Belirli bir sayfada güvenliği kapatmak için:
<%@ Page Language=”C#” şeklinde başlayan kodun içerisine

[csharp]ValidateRequest="false"[/csharp]

ekleyiniz.

Asp.Net IP Adresi Almak

A

Aşağıdaki komutları kullanarak sitenize giren kullanıcıların ip adreslerini öğrenebilirsiniz.

[csharp]Request.UserHostAddress;[/csharp]

veya

[csharp]Request.ServerVariables["REMOTE_ADDR"];[/csharp]

Class Dosyalarında Cache Kullanımı

C

Sitemizin genelinde/tamamında cache yapısı kullanmak istediğimizde genellikle cache methodunu class dosyamızdan kullanmak isteriz. Ancak class dosyası üzerinde cache kullanmaya  izin verilmemektedir. Class dosyasında cache kullanabilmek için HttpRuntime‘ dan yararlanıyoruz.

[csharp]HttpRuntime.Cache["cache_ismi"] = "içerik";[/csharp]

veya

[csharp]HttpContext.Current.Cache["cache_ismi"] = "içerik";[/csharp]

şeklinde kullanabilirsiniz.

Fatal error encountered during command execution.

F

Fatal error encountered during command execution.

Yukarıdaki hatanın bir çok sebebi olmasına rağmen genellikle parametreli bir sorgu gönderirken bu parametrelerden bir yada bir kaçına değer vermeyi unuttuğumuzda yada parametre isimlerini yanlış yazdığımızda bu hata ile karşılaşıyoruz. Hatanın çözümü için sorgunun düzgün yazılmış ve gönderilen parametrelerin eksik olmadığının kontrolünü yapabilirsiniz.

500 – Internal Server Error (Url Routing)

5

Asp.Net 4.0 ile url routing kullanımında siteyi sunucumuza yüklediğimizde 500 – Internal Server Error hatasıyla karşılaşabiliyoruz. Hatayı giderilmek için sitemizi ISS te Integrated Mod da çalıştırmamız gerekiyor. Bunu IIS üzerinden ayarlayabileceğimiz gibi web.config te yapacağımız ufak bi düzenleme ile de ayarlayabiliyoruz.

Çözüm için web.config e girilecek komut;

[csharp]<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>[/csharp]

Unutmadan url routing kullanabilmek için projenizin ASP.NET 4.0 ile yazılması ve sunucuda IIS 7 (yada IIS 6′ nın tüm updatelerinin kurulu olması) gerektiğini de hatırlatmakta fayda var. ASP.NET 3.5 ile kullanabilmek için ise webforms değil de MVC yapısını kullanmanız gerekmektedir.

Newline in Constant

N

newline in constant

Bu hata satırığın bittiğini ancak satır içeriğinin bitmediğini bildirir. Birden fazla string i birleştirirken yada sql sorgularınızda yazım hatalarınızdan dolayı bu hata ile karşılaşabilirsiniz.

Çözüm için yazdığınız satırı kontrol ediniz, mutlaka bir yerde hata yapmışsınızdır. ” (çift tırnak) karakterini string yada sql sorgusu içerisinde kullanıyorsanız \ (ters bölü) işareti ile duyarsız hale getirebilirsiniz.

Geçersiz geri gönderme veya geri arama bagimsiz degiskeni

G

Geçersiz geri gönderme veya geri arama bagimsiz degiskeni.  Yapilandirmada <pages enableEventValidation=”true”/> veya sayfada <%@ Page EnableEventValidation=”true” %> kullanilarak olay dogrulamasi etkinlestirildi. Bu özellik güvenlik nedenleriyle, geri gönderme veya geri arama olaylari bagimsiz degiskenlerinin bunlari baslangiçta isleyen sunucu denetiminden kaynaklandigini dogrular. Veriler geçerliyse ve beklendigi gibiyse, geri gönderme veya geri arama verilerini dogrulanmak üzere kaydetmek için ClientScriptManager.RegisterForEventValidation yöntemini kullanin.

Genellikle Datalist, Gridview gibi komponentler kullanırken ortaya çıkan bir hatadır, nedeni viewstatelerdir. Viewstate’ i kapatarak sorun çözülebilsede viewstate’ i kapatmak beraberinde başka sorunlar getirebiliyor.

Çözüm için verileri çektiğimiz kodları Page.IsPostBack arasına almamız gerekiyor.

[csharp]if (Page.IsPostBack == false){

// Verileri sorguladığınız kodlar bu alana yazılacaktır.

}
[/csharp]

Son çare olarak viewstate i EnableViewState=”false” komutuyla kapatabilirsiniz.

An error occurred while parsing EntityName

A

Bugün karşılaştığım bu hata xml dosyalarımız içerisinde & karakterini kullandığımızda ortaya çıkıyor. Direk olarak bu karakteri kullanabilmemiz için bildiğim kadarıyla kesin bir çözümü yok, duruma göre farklı çözüm yolları deneyebilirsiniz.

Çözüm için gelen karakteri &amp; olarak replace edebiliriz.

[csharp]Replace("&", "& amp;")[/csharp]

Eğer bu sorununuzu çözmediyse ve illa & işaretini kullanmak istiyorsanız & yerine _and_ gibi bir yazı kayıt edip yine bunu çekerken replace etmek gibi kolay bir yönteme kaçabilirsiniz :)

Hatanın bir diğer nedenide Türkçe karakter kullanmak olabilir. Bunun içinde dosyamızın başına aşağıdaki kodu ekliyoruz;

[xml]< ?xml version=\"1.0\" encoding=\"windows-1254\"? >[/xml]

Eğer sorununuzu çözmez ise duruma göre utf8 gibi diğer karakter setlerini kullanarakta şansınızı deneyebilirsiniz :)

Thread was being aborted

T

Try-catch yapısı altında Response.Redirect(); methodunu kullandığımız zaman aşağıdaki hata ile karşılarız.

Thread was being aborted

veya

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

Response.Redirect’ in kullanımı aşağıdaki gibidir;

[csharp]Response.Redirect("url.aspx",true/false);[/csharp]

yukarıdaki true,false alanını boş bıraktığımız zaman bu method otomatik olarak true halini almaktadır. True şeklinde kullanımı response işleminden sonra exception yaratmasını sağlamaktır. Yani try-catch içerisinde kullanırsanız yönlendirme işlemini yapmasına rağmen exception’ a da düşecektir. Exception’ a düşmesini istemiyorsanız Response.Redirect kodunuz ile birlikte false değerini göndermeniz gerekmektedir.

Ayrıntılı bilgi için Microsoft sayfası: http://support.microsoft.com/kb/312629/tr

Get in touch

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