500.19 There is a duplicate ‘system.web.extensions/scripting/scriptResourceHandler’ section defined.

500 Hataları sıklıkla karşıma çıkan hatalardan, çoğunlukla konfigürasyonla alakalı olana bu hatalardan bir yenisiyle daha karşılaştım. Asp.net projesine sonradan mvc kütüphanesi eklemiştim. Bazı ayarlar .Net versiyon 3.5 altında çalışıyor fakat proje v4.0 derlemesi altında. v4.0 ile proje varsayılan MachineConfig’den bazı ayarları otomatik olarak projeye aktarıyormuş ve tekrardan web.config’e eklemeye gerek yokmuş.

“There is a duplicate ‘system.web.extensions/scripting/scriptResourceHandler’ section defined.”

Bu duplicate hatasınıda nuget’ten eklenen bazı otomatik ayar satırlarını silerek halletmiş bulunmaktayım.

Çalışmalarınızda kolaylık dilerim.

asp.net hataları

It is an error to use a section registered as allowDefinition=’MachineToApplication’ beyond application level.

Projelerle alakalı dosyaları genelde proje içerisinde Document adlı bir klasörde toplarım. Çalıştığım büyük bir projenin bazen çalışıp bazen çalışmaması arada yukarıdaki hatayı vermesi gibi problemleri vardı son bir haftadır. Hatayı araştırdığımda bu Document klasörüne proje ile alakalı örnek bir uygulamayı kopyaladığım için aldığımı farkettim. Bu hata ile karşılaşıyorsanız büyük bir ihtimalle çalıştığınız projede iki adet web.config dosyası var demektir.

Windows formda textbox height

kaç sene oldu windows formla birşeyler yapmayalı. textbox ile alakalı boyutlandırma yaparken multiline yapmadan bi çözüm bulamadım. boyutlandırmak için textbox’ı multiline yapıp yüksekliğini belirleyebiliyoruz fakat bu sefer enter lı işlemlerde textbox’ın içinde yukarda göremediğimiz veri kalabiliyor! aman dikkat.

.Net classınızın xml çıktısını almak

.net ile oluşturduğunuz bir classın xml yapısını kullanmak isteyebilirsiniz. bu durumda aşağıdaki kod bloğu işinizi görecektir.

 
XmlSerializer xsSubmit = new XmlSerializer(typeof(MyObject));
 var subReq = new MyObject();
 StringWriter sww = new StringWriter();
 XmlWriter writer = XmlWriter.Create(sww);
 xsSubmit.Serialize(writer, subReq);
 var xml = sww.ToString(); 

web.config dosyasından mimeType ekleme

asp.net projemde json formatındaki dosyaların sunucu tarafından dosya var olmasına rağmen uzantıyı tanımadığı için bulunamadı hatası verdiğini gördüm. ya IIS üzerinden yada web.config üzerinden mimeType eklemesi yapmak gerekiyordu. IIS ile uğraşmadan web.config de system.webServer etiketi altına aşağıdaki kodu ekleyerek projenizde kullanmak istediğiniz uzantıları ekleyebilirsiniz.

  <staticContent>
 <mimeMap fileExtension=".json" mimeType="application/json" />
 </staticContent>

İstemcide, zararlı olabilecek bir değer Request.Form algılandı mvc

Formlardan gelen verilerin içerisindeki html elemanları yüzünden bu hatayı alıyoruz. Genellikle bir editör kullandığımızda bu problemin çözümü için asp.net form uygulamalarımızda mevcut sayfa nın özelliklerine

validateRequest=false;

değerini ekleyerek veya web.config dosyamızda <system.web> tağı içerisinde

<pages validateRequest=”false” />

ile çözüme kavuşabiliriz.

Eğer .net 4.0 ve üzeri bir proje başlatmışsak yukarıdaki çözüm işimizi görmeyebilir. .net 4.0 projelerinde web.config ayarlarımızda <system.web> tağı icerisine

<httpRuntime requestValidationMode=”2.0″/>

değerini eklememiz gerekir. Bu ayarlardan sonra uygulama güvenliğini sağlamak için biraz kafayı yormak gerekir.

Repeater İçerisinde Repeater Kullanmak

<asp:Repeater ID="rpAnaKategori" runat="server" OnItemDataBound="rpAnaKategori_ItemDataBound" >
 <ItemTemplate>
 <%#Eval("KategoriAdi") %>
 <br />
 <asp:Repeater ID="rpAltKategori" runat="server">
 <ItemTemplate>
 <%#Eval("KategoriAdi") %>
 <br />
 </ItemTemplate>
 </asp:Repeater>
 </ItemTemplate>
 </asp:Repeater>

protected void rpAnaKategori_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rp = (Repeater)e.Item.FindControl("rpAltKategori");
rp.DataSource=AltKategorileriGetir();
rp.DataBind();
}

Asp.Net’de çerez yönetimi

Sitelerimizde kullanıcı taraflı verileri saklamak için çerezleri kullanacaksak çerez okuma ve yazma ile ilgili aşağıdaki kod blog’u yardımcı olacaktır.

//Write cookie directly to collection.
Response.Cookies[“LastVisit”].Value = DateTime.Now.ToString();
Response.Cookies[“LastVisit”].Expires = DateTime.Now.AddDays(1);

//Create an instance of a cookie then add it to the collection.
HttpCookie cookie = new HttpCookie(“LastVisit”);
cookie.Value = DateTime.Now.ToString();
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);

//Create a second cookie for the same user.
Response.Cookies[“UserID”].Value = “10”;
Response.Cookies[“UserID”].Expires = DateTime.Now.AddDays(1);

//Create two subkey values directly in the cookie collection.
Response.Cookies[“UserData”][“LastVisit”] = DateTime.Now.ToString();
Response.Cookies[“UserData”][“UserID”] = “10”;
Response.Cookies[“UserData”].Expires = DateTime.Now.AddDays(1);

//Create an instance of a cookie, then add two subkeys, and add it to the collection.
HttpCookie cookie1 = new HttpCookie(“UserData”);
cookie1.Values[“LastVisit”] = DateTime.Now.ToString();
cookie1.Values[“UserID”] = “10”;
cookie1.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie1);

//Set the scope of a cookie using a path which restricts the cookie to that
//path and below.
HttpCookie cookie2 = new HttpCookie(“UserData”);
cookie2.Values[“LastVisit”] = DateTime.Now.ToString();
cookie2.Values[“UserID”] = “10”;
cookie2.Expires = DateTime.Now.AddDays(1);
cookie2.Path = “/Admin”;
Response.Cookies.Add(cookie2);

//Set the scope of a cookie using a subdomain which restricts to that subdomain only.
//Setting to a domain restricts to the domain and any subdomains.
HttpCookie cookie3 = new HttpCookie(“UserData”);
cookie3.Values[“LastVisit”] = DateTime.Now.ToString();
cookie3.Values[“UserID”] = “10”;
cookie3.Expires = DateTime.Now.AddDays(1);
cookie3.Domain = “suppport.mysite.com”;
Response.Cookies.Add(cookie3);

//Read a cookie value directly, encoding it for safety.
if (Request.Cookies[“LastVisit”] != null)
{
Label1.Text = Server.HtmlEncode(Request.Cookies[“LastVisit”].Value);
}

//Read a cookie by creating an instance of the cookie.
if (Request.Cookies[“LastVisit”] != null)
{
HttpCookie cookie4 = Request.Cookies[“LastVisit”];
Label1.Text = Server.HtmlEncode(cookie4.Value);
}

//Read a subkey value in a cookie directly.
if (Request.Cookies[“UserData”] != null)
{
Label1.Text = Server.HtmlEncode(Request.Cookies[“UserData”][“LastVisit”]);
}

//Read a subkey value by using the .Values collection.
System.Collections.Specialized.NameValueCollection cookieCollection = Request.Cookies[“UserData”].Values;
Label1.Text = Server.HtmlEncode(cookieCollection[“LastVisit”]);

//Modify a cookie by overwriting it with a new cookie of the same name.
Response.Cookies[“LastVisit”].Value = DateTime.Now.ToString();
Response.Cookies[“LastVisit”].Expires = DateTime.Now.AddDays(1);

//Delete a cookie by setting the expiration to a previous date/time.
Response.Cookies[“LastVisit”].Expires = DateTime.Now.AddDays(-1);

//Modify a subkey value by assigning a new value to it.
Response.Cookies[“UserData”][“LastVisit”] = DateTime.Now.ToString();

//Delete a subkey value by removing it.
Response.Cookies[“UserData”].Values.Remove(“LastVisit”);

//Transmit the cookie information using SSL. Note, the cookie data is still
//in plain text on the user’s computer.
Response.Cookies[“UserData”].Secure = true;