17 Ekim 2016 Pazartesi

Asp.Net "the timeout period elapsed prior to obtaining a connection from the pool" Hatası

Hatanın muhtemel iki sebebi;
1- veri tabanı ile uygulam arasında bağlantı hızının yavaş olması
2- Açılan anacak kapatılması unutulan bağlantılar.
Çözümler:
1. durum için daha iyi bir sunucuya geç
2. durum için
a. açık bağlantıları kapat
b. açık bağlantı havuzunu genişlet.
bağlantı havuzunu genişletme yolu: bağlantı cümesinin içine bağlantı havuzunun genişliği belirtme ile olur.
Örnek: <add name="baglanti" connectionString="Data Source=ip_adresi ; Initial Catalog= veri tabani_adi; user id=kullanıcı_adı; password=şifre Max Pool Size=20000 " providerName="System.Data.SqlClient"/>

Ajax Modal Popup Extender Kullanımı

Kullanıcı dostu bir pop up;  Ajax Modal Popup Extender
Uyarı, hata ve hatta sayfada video gösterimi için çok işe yarar.
CSS:
 .popUp {
            background-color: black;
           filter: alpha(opacity=60);
            opacity: 0.6;
}
 Aspx:
 <!--script manager sayfaya eklenince
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
Otomatik eklenecektir. Eklenmez ise dikkat :)  -->
 <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <br />
<!-- Pop Up'u açmak ( göstermek için kullanılacak düğme -->
        <asp:Button ID="dGoster" runat="server" Text="Aç" OnClick="dGoster_Click"  />
<!-- Pop Up içinde görünecek panel paneli istediğim şekilde biçimlendire bilirim  -->
        <asp:Panel runat="server" ID="panelPop">
            panel deneme
            <br />
<!-- Pop Up'u gizlemek için bir düğme -->
             <asp:Button runat="server" Text="Gizle" ID="dGizle" OnClick="dGizle_Click" />
<!-- Pop Up'un içinde işlem yapmak için her hangi bir düğme -->
            <asp:Button ID="dDevam" runat="server" Text="Sayfaya Git" OnClick="dDevam_Click" />
      </asp:Panel>
         <asp:ModalPopupExtender ID="AjxPopUp" runat="server" PopupControlID="panelPop" TargetControlID="dGoster" BackgroundCssClass="popUp" DropShadow="true" >
</asp:ModalPopupExtender>
Cs:
// pop up'u göster komutu
    protected void dGoster_Click(object sender, EventArgs e)
    {
        AjxPopUp.Show();
    }
//Pop up'u gizle komutu
    protected void dGizle_Click(object sender, EventArgs e)
    {
        AjxPopUp.Hide();
    }
//pop up içinde bir işlem düğmesi
    protected void dDevam_Click(object sender, EventArgs e)
    {
        Response.Redirect("http://www.meb.gov.tr");
    }

Asp.Net İp Kontrol

public static class ipKontrol { public static string IP() {
string ip = "";
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) {
ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ip)) { string[] ipRange = ip.Split(",".ToCharArray()); ip = ipRange[0];
}
}
if (string.IsNullOrEmpty(ip)) if (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] != null)
ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); ip = ip.Trim(); return ip;
}
}
Kullanımı: string ip = ipKontrol.IP();

Div tasarımlarında birbirlerinin üzerlerine gelmelerini önlemek

<div style="clear: both;"></div>
kodu ilgili alana yazıldığında öndeki css tasarımlarının alt tarafa geçmelerini engellemiş olacak.

Asp.Net Smtp Üzerinden E-Posta Göndermek

MailMessage Mesaj = new MailMessage();
Mesaj.From = new MailAddress("info@site.com);
Mesaj.To.Add(keposta.Text.ToString());// gönderilecek adres adres
Mesaj.Subject = "Mesaj Konusu";
Mesaj.IsBodyHtml = true;
string icerik = "icerik burda olacak buraya html kodu ile değişik şeyler yazıla bilir.";// mesaj metni buraya yazılacak
Mesaj.Body = icerik;
SmtpClient smtp = new SmtpClient("mail.site.com", 587);
System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("info@site.com", "şifre");
smtp.UseDefaultCredentials = true; smtp.Credentials = SMTPUserInfo;
smtp.Send(Mesaj)

Data Grid View içirişinde seçilen satırı silmek için düğme içine yazılacak kod

if (DataGridView1.CurrentRow == null)
{
MessageBox.Show("uyarı");
} else{
bag.Open();
OleDbCommand sil = new OleDbCommand("DELETE from [kaynak] where Kimlik=@ID", bag);
sil.Parameters.AddWithValue("@ID", DataGridView1.CurrentRow.Cells[0].Value);
sil.ExecuteNonQuery();
bag.Close();
ara();
}

Asp.Net WebConfig üzerinden dosya upload limitini ayarlamak

Standart Upload limiti yeterli gelmediğinde webconfid içerinde bir ayar yaparak upload limitini istenilen orana kadar artırılabilir.  Bunun için; 

Web.config dosyasınızda httpRuntime elementine maxRequestLength parametresini ekleyin ve KB olarak istediğiniz maksimum değeri girin.

Örnek kod:

  <system.web> <httpRuntime executionTimeout="100000" maxRequestLength="20480" /> </system.web> 

C# ‘da Veri tabanında ki veriyi DataGridView’e yüklemek

//Veri tabanına bağlantısını yapıyorum ( Aşağıdaki kod access veri tabanına göre hazırlanmıştır)
//Kod:

OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=veri_tabani.mdb");

/* Veri tabanını proje dosyası içinde bin/Debug içine atılırsa, yol belirtmeye gerek kalmaz diğer bilgisayarlara taşındığında sorun çıkarmaz;*/
Kod:

string sorgu = "Select * from kaynak";
OleDbDataAdapter ad = new OleDbDataAdapter(sorgu, bag);
DataTable dt = new DataTable(); ad.Fill(dt);
DataGridView1.DataSource = dt;

SQL Gruplama Kullanımı

MIN(); En küçük sayı ve alfabetik en ilk harfi
MAX(): en büyüğü
SUM():toplama yapar (sayısal değer taşımalı)
SELECT SUM(UCRETLER) FROM TABLO WHERE isciId=1
AVG(): aritmetik ortalama
COUNT(): COUNT(*):   boş alanlar dahil bütün alanları sayı
COUNT(alanadı):  NULL  değerleri saymaz
SELECT  COUNT(*) FROM TABLO1
ALAN ADLARINA GÖRE VERİLERİ GRUPLAMA: 
GRUP BY:  ifadesi ile gruplama yapıla bilir.
ÖRNEK:
SELECT RENK, AVG(FIYAT), AVG(KAR) FROM TABLO GRUP BY RENK
SELECT SEHIR, COUNT(ADRESID) AS SAYI FROM ADRES GRUP BY SEHIR ORDER BY SEHIR
SELECT BOLUMID, SEHIR, COUNT(*) FROM OGRENCI GRUP BY BOLUMID,SEHIR ORDER BY BOLUM ID
gruplanan verilere şart eklemek:  HAVING
SELECT SINIF, SOUNT(ID) FROM TABLO WHERE RENK='KIRMIZI' OR 'MAVI' GRUP BY SINIF HAVING COUNT(ID)>5 ORDER BY SINIF