Asp.net Cookie Encyript ve Decrypt

Bu makalemde asp.net projesi içerisindeki cookieleri nasıl encyript ve decrypt yapıcağımızı göstereceğim. Bunun için ise “MachineKey.Protect” and “MachineKey.Unrotect” methodlarını kullanacağız.

Encrypt Cookies:
//using System.Text;
//using System.Web.Security;

var cookieText = Encoding.UTF8.GetBytes("Text for Cookie");
var encryptedValue = Convert.ToBase64String(MachineKey.Protect(cookieText, "ProtectCookie"));

//--- Create cookie object and pass name of the cookie and value to be stored.
HttpCookie cookieObject = new HttpCookie("NameOfCookie", encryptedValue);

//---- Set expiry time of cookie.
cookieObject.Expires.AddDays(5);

//---- Add cookie to cookie collection.
Response.Cookies.Add(cookieObject);
Decrypt Cookies:
 
var bytes = Convert.FromBase64String(Request.Cookies["NameOfCookie"].Value);
var output = MachineKey.Unprotect(bytes, "ProtectCookie");
string result = Encoding.UTF8.GetString(output);
Reklamlar

C# Ile SCOPE_IDENTITY (Son Eklenen Kayıdın ID Sini Almak)

Yeni bir kayıt girdiniz ve bu kaydın rowID sine ihtiyacınız var ise SCOPE_IDENTITY i kullanabilirsiniz.
Aşağıdaki örnek kullanımını açıklamak için yeterli olacaktır.
SQL Query

cmdInsert.CommandText =
"INSERT INTO CrmEmail (CustomerID, EmailAddress, EmailSource) VALUES (@CustomerID, @EmailAddress, @EmailSource) SET @ID = SCOPE_IDENTITY()";
 
cmdInsert.Parameters.ADD("CustomerID", SqlDbType.NVarChar, 10).Value = CariHesapKodu;
cmdInsert.Parameters.ADD("EmailAddress", SqlDbType.NVarChar, 50).Value = EmailAdresi;
cmdInsert.Parameters.ADD("EmailSource", SqlDbType.NVarChar, 30).Value = LinkKaynagi;
cmdInsert.Parameters.ADD("@ID", SqlDbType.Int).Direction = ParameterDirection.Output;
 
conInsert.Open();
cmdInsert.ExecuteNonQuery();
conInsert.Close();
 
MessageBox.SHOW(cmdInsert.Parameters["@ID"].Value.ToString());

C# ta PDF dosyası nasıl oluşturulur? (itextsharp)

ItextSharp Kütüphanesiyle Pdf Oluşturma

Cemelma'dan küçük hatırlatmalar

Fatura vb. pdf oluşturmak için itextsharp dll kullanılabilir. Nuget ile “Install-Package iTextSharp” komutu ile de yüklenilebilir. Dll’i buradan indirebilirsiniz.
Fatura oluşturmak için kullandığım method;

void BillSend() { #region kullanılan klasörleri oluştur if (!Directory.Exists(@"c:ITrack")) { Directory.CreateDirectory(@"c:ITrack"); Directory.CreateDirectory(@"c:ITrackimg"); Directory.CreateDirectory(@"c:ITrackpdf"); } #endregion #region Font seç BaseFont trArial = BaseFont.CreateFont(@"C:WINDOWSFontstahoma.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); iTextSharp.text.Font fontArial = new iTextSharp.text.Font(trArial, 10, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.DARK_GRAY); iTextSharp.text.Font fontArialHeader = new iTextSharp.text.Font(trArial, 13, iTextSharp.text.Font.BOLD, iTextSharp.text.BaseColor.BLACK); iTextSharp.text.Font fontArialbold = new iTextSharp.text.Font(trArial, 9, iTextSharp.text.Font.BOLD, iTextSharp.text.BaseColor.DARK_GRAY); iTextSharp.text.Font fontArialboldgeneral = new iTextSharp.text.Font(trArial, 10, iTextSharp.text.Font.BOLD, iTextSharp.text.BaseColor.BLACK); #endregion #region Fatura pdf oluştur iTextSharp.text.Document pdfFile = new iTextSharp.text.Document(); PdfWriter.GetInstance(pdfFile, new FileStream("C:ITrackpdfFirst.pdf", FileMode.Create)); pdfFile.Open(); #endregion #region Fatura oluşturan bilgileri pdfFile.AddCreator("ITrack"); //Oluşturan kişinin isminin eklenmesi pdfFile.AddCreationDate();//Oluşturulma tarihinin eklenmesi pdfFile.AddAuthor("ITrack v.1.0"); //Yazarın isiminin eklenmesi pdfFile.AddHeader("Başlık", "PDF UYGULAMASI OLUSTUR"); pdfFile.AddTitle("ITrack Aylık Fatura"); //Başlık ve title eklenmesi #endregion #region Fatura firma resmi ve tarihi oluştur iTextSharp.text.Image jpgimg = iTextSharp.text.Image.GetInstance(@"C:ITrackimgkipa.png"); jpgimg.ScalePercent(35); jpgimg.Alignment = iTextSharp.text.Image.LEFT_ALIGN; PdfPTable pdfTableHeader = new PdfPTable(3); pdfTableHeader.TotalWidth = 500f; pdfTableHeader.LockedWidth =…

View original post 213 kelime daha

Asp.Net Mvc Bir Excel Dosyasını Import Edip Table’a Kayıt Ekleme

Bu yazımda, projemize bir excel dosyası upload edip, excel dosyasındaki her satırı ilgili tablomuza kayıt olarak eklemeyi göstericeğim.

1. Öncelikle bir Controller ekleyelim, Controller ismi ImportFromExcel olsun. Index actionuna view sayfası ekleyelim. Index Viewı içine form elemanlarımız ekleyelim:

@using (Html.BeginForm("ImportExcelFileToDatabase", "ImportExcel", FormMethod.Post, new { enctype = "multipart/form-data" }))
{ 
<div>       
     <input type="file" id="FileUpload" name="FileUpload" required data-val="true"
data-val-required="please select a file"/>
            
     <input type="submit" id="Submit" class="submit" value="Upload" title="Click to upload file"/> 
        
</div>

}

Ekran görüntümüz şöyle olacaktır:

Capture

2. Sql Server’da örnek bir müşteri tablosu oluşturalım:

Customer

3. Daha sonra bir excel dosyası oluşturalım ve içinde de müşteriye ait satırlar ve sütıunlar oluşturalım.

ExcelPic

4. ImportExcel adlı oluşturduğumuz controller içine de formda post olmasını istediğimiz action name olarak belirttiğimiz ImportExcelFileToDatabase actionı ekleyelim:

[HttpPost]
public ActionResult ImportExcelFileToDatabase(HttpPostedFileBase FileUpload)
{
      try
      {
                DataSet ds = new DataSet();
                if (Request.Files["FileUpload"].ContentLength > 0)
                {
                    string fileExtension = System.IO.Path.GetExtension(Request.Files["FileUpload"].FileName);
 
                    if (fileExtension == ".xls" || fileExtension == ".xlsx")
                    {
                        string fileLocation = Server.MapPath("~/Content/") + Request.Files["FileUpload"].FileName;
                        if (System.IO.File.Exists(fileLocation))
                        {
 
                            System.IO.File.Delete(fileLocation);
                        }
                        Request.Files["FileUpload"].SaveAs(fileLocation);
                        string excelConnectionString = string.Empty;
                        excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                        fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                        //connection String for xls file format.
                        if (fileExtension == ".xls")
                        {
                            excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                            fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                        }
                        //connection String for xlsx file format.
                        else if (fileExtension == ".xlsx")
                        {
                            excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                            fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                        }
                        //Create Connection to Excel work book and add oledb namespace
                        OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
                        excelConnection.Open();
                        DataTable dt = new DataTable();
 
                        dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        if (dt == null)
                        {
                            return null;
                        }
 
                        String[] excelSheets = new String[dt.Rows.Count];
                        int t = 0;
                        //excel data saves in temp file here.
                        foreach (DataRow row in dt.Rows)
                        {
                            excelSheets[t] = row["TABLE_NAME"].ToString();
                            t++;
                        }
                        OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString);
 
 
                        string query = string.Format("Select * from [{0}]", excelSheets[0]);
                        using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, excelConnection1))
                        {
                            dataAdapter.Fill(ds);
                        }
                    }
                    if (fileExtension.ToString().ToLower().Equals(".xml"))
                    {
                        string fileLocation = Server.MapPath("~/Content/") + Request.Files["FileUpload"].FileName;
                        if (System.IO.File.Exists(fileLocation))
                        {
                            System.IO.File.Delete(fileLocation);
                        }
 
                        Request.Files["FileUpload"].SaveAs(fileLocation);
                        XmlTextReader xmlreader = new XmlTextReader(fileLocation);
                        // DataSet ds = new DataSet();
                        ds.ReadXml(xmlreader);
                        xmlreader.Close();
                    }
 
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        string conn = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
                        SqlConnection con = new SqlConnection(conn);
                        string query = "Insert into TestExcelCustomerTable(Name,Surname,Tel, Address, Email) Values('" +
                        ds.Tables[0].Rows[i][0].ToString() + "','" + ds.Tables[0].Rows[i][1].ToString() +
                        "','" + ds.Tables[0].Rows[i][2].ToString() + "', '" + ds.Tables[0].Rows[i][3].ToString() + "', '" + ds.Tables[0].Rows[i][4].ToString() + "')";
                        con.Open();
                        SqlCommand cmd = new SqlCommand(query, con);
                        cmd.ExecuteNonQuery();
                        con.Close();
                    }
                    ViewBag.State = "Success";;
                }
                else
                {
                    ViewBag.State = "NoFile";      
                }
                return View("Index");
                
     }
     catch (Exception ex)
     {
          ViewBag.State = "Error";
          return View("Index");
     }
}

Böylece excel dosyasındaki tüm satırlar ve tüm sütunlar tabloya kayıt olarak eklenmiş olur.

Asp.Net Mvc Projesinde ReCaptcha Kullanımı

Merhabalar bu yazımda herhangi bir projede güvenliği arttırmak için kullanılan googlea ait ReCaptcha apisinin Mvc projemizde nasıl kullanılacağını anlatacağım.

1. Öncelikle reCaptcha.dll dosyasını sitesinden indirin.

2. Projenize reCaptcha.dll dosyasını referans olarak dahil edin.

ReCaptchaReferans

 

 

 

 

 

3. Captcha validasyonun kullanmak için bir Action Filter oluşturun.

public class CaptchaValidatorAttribute : ActionFilterAttribute
    {
        private const string CHALLENGE_FIELD_KEY = "recaptcha_challenge_field";
        private const string RESPONSE_FIELD_KEY = "recaptcha_response_field";
 
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var captchaChallengeValue = filterContext.HttpContext.Request.Form[CHALLENGE_FIELD_KEY];
            var captchaResponseValue = filterContext.HttpContext.Request.Form[RESPONSE_FIELD_KEY];
            var captchaValidtor = new Recaptcha.RecaptchaValidator
            {
                PrivateKey =  "-- SİZE AİT RECAPTCHA PRİVATE KEY --",
                RemoteIP = filterContext.HttpContext.Request.UserHostAddress,
                Challenge = captchaChallengeValue,
                Response = captchaResponseValue
            };
 
            var recaptchaResponse = captchaValidtor.Validate();
 
            // this will push the result value into a parameter in our Action  
            filterContext.ActionParameters["captchaValid"] = recaptchaResponse.IsValid;
 
            base.OnActionExecuting(filterContext);
        }
    }

4. Form Submit Olduğunda Captcha Validasyonunu Kullanmak için Controllerınızda bir Action Methodu Oluşturun.

[CaptchaValidator]
[AcceptVerbs(HttpVerbs.Post)]
 public ActionResult CreateComment(Int32 id, bool captchaValid)
 {
            if (!captchaValid)
            {
                ModelState.AddModelError("_FORM", "You did not type the verification word correctly. Please try again.");
                return View();
            }
            else
            {
                // If we got this far, something failed, redisplay form
                return View();
            }
        
}

Yukarıdaki oluşturduğumuz Action methoduna daha önce kendimiz oluşturduğumuz CaptchaValidator attribute dahil ettik. Bu attribute, Action Filtere giderek Captchanın doğruluğunu kontrol eder ve CreateCommand isimli Action methodu içindeki captchaValid değerine true veya false bir değer set eder.

5. Bir Html Helper Oluşturun ve Sayfanıza Bu Helperi Render Edin.

public static string GenerateCaptcha(this HtmlHelper helper)
        {
            var captchaControl = new Recaptcha.RecaptchaControl
            {
                ID = "recaptcha",
                Theme = "White",
                PublicKey = "-- RECAPTCHA PUBLİC KEY",
                PrivateKey = "-- RECAPTCHA PRİVATE KEY"
            };
 
            var htmlWriter = new HtmlTextWriter(new StringWriter());
 
            captchaControl.RenderControl(htmlWriter);
 
            return htmlWriter.InnerWriter.ToString();
        }

Şimdi ise View sayfanıza oluşturduğunuz Html Helper’ı render edin.

@Html.Raw(Html.GenerateCaptcha())

Şimdi ise nasıl bir sayfayla karşılaşacağımıza bakalım:

LoginReCaptcha

 

 

 

 

 

 

 

 

 

İşte bu kadar basit. https://www.google.com/recaptcha/admin#whyrecaptcha sitesinden de kendi recaptcha hesabınız için kullanacağınız Private Key ve Public Keyini elde etmeniz gerekmektedir. Şimdiden Kolay Gelsin.

Asp.net Web Servis Kullanmak

Merhaba arkadaşlar Web servisleri kullanmanın amacı serverda içeriğini göremediğimiz fonksyionların çıktılarını alabilmemiz veya o fonksyionlar aracılığıyla veritabanına veri girmemize yarar.Özelikle intranet şirket içi ağlarda kullanılır.

Web Servisleri kullanmak için öncelikle yeni Web Site projesinden ASP.NET Web Servis kısmını seçiyoruz. Daha sonra karşımıza

şeklinde hazır fonksyion geliyor.Bu ilk fonksyionumuzdur.Buna giriş parametreleri ekleyelim ve içeriğini değiştirelim

 

 

 

Fonksiyonu yukarıdaki gibi değiştirdiğimizde iki sayıyı toplayıp bize geri dönen fonksiyonu hazırlamış olucağız.Buraya kadarki kısımlarımız basitti.Şimdi gelelim bu fonksyionu C#’ta nasıl kullanıcağımıza öncelikle sağ taraftan referances‘e sağ tıklayıp add service referance ‘a tıklarız ordan aşağıdan soldan Advenced sonrada Add Web Referance kısmına tıklanır.Karşımıza browser tarzı 1form gelicek burdanda adres kısmına servisimizi debug ettiğimizde çıkan adresi yazıyoruz.

http://localhost:50342/wServices/Service.asmx

şeklinde adrese benzer.(wService benim servisimin adı sizde farklı olabilir)

buna localhost olarak ekledikten sonra projemize sağ tarafta web referances belirir.Ordan eklediğimiz servisimizi görebiliriz.Bu fonksyionumuzu C#’ta kullanmak için ise

 

 

Yukarıda tanımladığımız localhostumuzdan yeni nesne türetiriz.

daha sonrada ;

servis.Topla(5,6);
şeklinde web servisimizi kullanabilir.Basit şekliyle c#’ta web servislerin kullanımı böyledir.Kullandığımız web servisler bize XML dilinde veri dönerler.Bu XML verileri parse ederek(çözümleyerek) kendi programlarımızda kullanabiliriz.