No response while calling API in ASP.NET C# Web Forms

Asp.net webform uygulamasında async bir api call işlemi yapmaya çalışıyorsanız webformun async çalışmasını doğrulamalısınız.

Async=True
Orn: <%@ Page Title=”” Language=”C#” Async=”true” MasterPageFile=”~/Mast.. gibi

Daha sonra HttpClient ile post yaptığınız yerde ConfigureAwait(false) demelisiniz.

Orn: HttpResponseMessage response = await client.PostAsJsonAsync(“api/user”, userDTO).ConfigureAwait(false); gibi.

Solution:

HttpResponseMessage response = await client.PostAsJsonAsync("api/user", userDTO).ConfigureAwait(false);

 

Bir daha ki ipucunda görüşmek üzere, İyi çalışmalar…

ASP.Net’de Encoding ve Decoding Yapımı

Kullanım yerleri farklılık gösterebilir fakat daima işimize yarayacak bir kod bloğu. Özellikle QueryString ile veri gönderirken açık olarak parametre göndermek ciddi bir güvenlik zafiyetidir. İşte tamda bu alanda kullanmamız gereken bir özellik.

public static string Encode(this string str)
{
byte[] toEncodeAsBytes = UnicodeEncoding.Unicode.GetBytes(str); 
return Convert.ToBase64String(toEncodeAsBytes);
}
public static string Decode(this string str)
{
byte[] encodedDataAsBytes = Convert.FromBase64String(str);
return UnicodeEncoding.Unicode.GetString(encodedDataAsBytes);
}

Görüşmek üzere!

Asp.Net MVC 3 – ReCaptcha

Merhabalar arkadaşlar bu makalemizde google’ın bir hizmeti olan recaptcha uygulamasının nasıl kullanıldığını görüyor olacağız.

Kullanımı her yapıya göre farklılık göstersede aslında birbirleri arasında pek fazla fark yok. Biz makalemizde Asp.Net MVC 3 için örnek yapacağız.

1) En başta projemize Microsoft-Web-Helpers tool’unu kurmamız gerekmekte. Bunun için solution’a sağ tıklayıp “Add Package Reference” diyoruz. Daha sonra source kısmında Microsoft-Web-Helpers’i aratıp gerekli tool’a ulaşıyoruz. Install dedikten sonra projemizin reference kısmına Systems.Web.Helpers dll’ini referans olarak ekliyor. Bu işlemi yaptıktan sonra; http://www.google.com/recaptcha sayfasına girip google hesabınız ile giriş yapacaksınız. Üye olduktan sonra bir domain girmenizi isteyecek ve size 2 adet key üretecek. Bunlardan biri publicKey diğeri ise privateKey’dir. Daha sonra reCAPTCHA plugins and libraries diyerek gerekli dll dosyasını indirip reference’lerimize dahil ediyoruz.

2)Şimdi projemizin source kısmına recaptcha’i ekleyelim. Bunun için ekleyeceğimiz razor veya aspx webformumuza

@{
ReCaptcha.PublicKey = "Sizin public Keyiniz";
}
@ReCaptcha.GetHtml(theme: "red")

kodlarını ekliyoruz. Theme seçeneği olarak bizlere 4 farklı seçenek sunuyor. Ayrıca kendimizde bir theme generate edebiliyoruz. Bunlar ile ilgili geniş bilgi http://www.google.com/recaptcha nin dökümantasyon kısmında mevcut. Bu işlemi yaptıktan sonra recaptcha sayfamıza gelecektir.

3)Artık tek bir şey kaldı, kodu kontrol etmek.. Kodu kontrol etmek için ise Model’imize

if (ModelState.IsValid)
{
if (ReCaptcha.Validate("sizin privateKey’iniz"))
{
Response.Write("Güvenlik kodu doğrulandı");
}
else
{
Response.Write("Güvenlik kodunu yanlış girdiniz.");
}


}

 

Bu makaleyi ekran görüntüleriyle süslemek ve genişletmek isterdim fakat, aslına bakarsanız 2 saat once bir projemde lazım olduğu için kendim kullandım. Ve unutmamak için 10 dk içerisinde buraya karaladım. Mutlaka ama mutlaka birilerine yardımcı olacaktır 🙂 Takıldığınız yer olur ise makalenin altına yorum bırakabilirsiniz, mutlaka cevaplarım..
Hoşçakalın!

Asp.Net alert metodu ( Hayat kurtarır )

Hayat kurtaran alert metodu..

Herkese merhabalar, bu dersimizde asp.net’de en çok ama en çok sorunla karşılaştığımız alert zırvasından bahsediyor olacağız. Sürekli 4 karelik bir web sayfasında en alttaki butonda kullanıcıya mesaj bildirmek isterken hep ajaxlarla updatepanellerle boğuşuruz boğuşuruz ve boğuşuruz…
Artık ajax’a son, artık uğraşmaya son, artık alert metodumuz var 🙂
Hemen projenizde yeni bir class oluşturun alert isminde ve bu class ile bu metodu içerisine bırakıverin. Sonrasında label.text = “cansıkıcı” şeklinde mesaj vereceğinize Alert.Show(“Mesajınız”) şeklinde kullanın. Framework’teki MessageBox.Show(“Mesaj”)’den ne farkı kaldı. Bu classı bir kere projenize entegre edin sonrasında lazım olduğu yerde çağırıp kullanın. Haydi kolay gelsin..

using System.Web;
using System.Text;
using System.Web.UI;
public static class Alert
{
public static void Show(string message)
{
// Buradaki tek tırnak mesaj silmek için izin ister.
string cleanMessage = message.Replace("'", "\\'");
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
// Yüklenecek webformu alır.
Page page = HttpContext.Current.CurrentHandler as Page;
// Sayfa üzerinde allready olup olmadığını kontrol eder.
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);
}
} 
}

 

UrlRewriting Cannot use a leading to exit above the top directory Hatası

Herkesin UrlRewriting hakkında ufakda olsa bilgisi vardır. Uzun lafın kısa bu uygulamayı urlrewriting sınıfını kullanan yada web config üzerinden işlem yapan arkadaşlar bir hata iler karşılaşıyorlar.

Bu Hatanın tam anlamı “En üst dizine çıkılamıyor” denilebilinir..

Yada Uygulamanızdaki resimlerin gözükmediğini de farketmiş olabilirsiniz. Bu durumda yapacağınız işlem ~/ ‘i kullanmaktır.

Örnek : .. imageUrl=”~/resimler/hako.jpg”/>

Bu şu demek oluyor En üst dizindeki Resimler Klasoru içinde Hako.jpg’e eriş. Dolayısı ile siz urlrewriting işlemi olsun yada olmasın Visual Studio içerisinde ~/ kullanır iseniz sorunu çözmü olacaksınızdır.

Not : Server taraflı uygulamalarda çalışmaktadır.

Umarım faydalı olur.

Aspnet Resim Boyutlandırma Kodu

public System.Drawing.Image ResimBoyutlandir(System.Drawing.Image imgPhoto, int Yukseklik)
{
int sourceWidth = imgPhoto.Width;
int sourceHeight = imgPhoto.Height;

int destWidth = Yukseklik;
int destHeight = 200;

Bitmap bmPhoto = new Bitmap(destWidth, destHeight, PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);

Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic; 
grPhoto.FillRectangle(Brushes.White, 0, 0, destWidth, destHeight);

grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, destWidth, destHeight), new Rectangle(0, 0, sourceWidth, sourceHeight), GraphicsUnit.Pixel);

grPhoto.Dispose();
return bmPhoto;
}

 

Kullanışı

if (FileUpload1.HasFile == true)
{
string imageName = FileUpload1.FileName;
if (imageName != null)
{

System.Drawing.Image imgPhotoVert = System.Drawing.Image.FromFile(Server.MapPath(Klasor));
System.Drawing.Image imgPhoto = null;
Images img = new Images();
imgPhoto = img.ResimBoyutlandir(imgPhotoVert, yeniW); //ScaleByPercent adlı mekanızmaya yolluyoruz aldığımız bilgileri.
imgPhoto.Save(Server.MapPath("~/upload/" + gelenResim), ImageFormat.Jpeg); // Ekrana basıyoruz..
imgPhoto.Dispose();

}

 

Teşekkürler, iyi çalışmalar..

Aspnet Ajax (Accordion) Nesnesinin Kullanımı

Merhaba arkadaşlar,
Bu makalemde Ajax Toolkitle gelen Accordion nesnesinin kullanımını anlatmaya calısacagım. Toolboxtaki bu nesne sayesinde sayfalarımızda güzel menüler oluşturabiliriz..

Sayfamızın Source kısmına geleceğiz. Tüm dizaynı kod bölümünden yapacağız. Öncelikle en üste Script Manager atıyoruz. Tüm Ajax uygulamalarımız için bu böyle biliyorsunuz.

<asp:ScriptManager ID="ScriptManager1" runat="server"/>

 

Hemen sonrasında accordionumuzu ekliyoruz. Bunu istersek kodla yapabiliriz. Ya da ToolBox`ımızdan ekleyedebiliriz.

Eklediğimizde ilk görünümü ;

<cc1:Accordion ID="Accordion2" runat="server">                
</cc1:Accordion>

gibi olacaktır. Fakat bunu şu şekilde düzenleyebiliriz.

<cc1:Accordion  ID="Accordion1"  runat="server" 
SelectedIndex="0" 
HeaderCssClass="accordionHeader"
ContentCssClass="accordionContent"  
FadeTransitions="true" 
FramesPerSecond="40"
TransitionDuration="250" 
AutoSize="None">
</cc1:Accordion>

 

Değişiklikleri yaptıysak accordionumuzun çerçevesi hazırdır şimdi panellerimizi ekleyerek accordionumuzu tamamlayalım..

<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<cc1:Accordion                
ID="Accordion1"                
runat="server"                
SelectedIndex="0"                
HeaderCssClass="accordionHeader"                
ContentCssClass="accordionContent"               
FadeTransitions="true"                
FramesPerSecond="40"                
TransitionDuration="250"                
AutoSize="None">
<Panes>                    
<cc1:AccordionPane ID="AccordionPane1" runat="server">
<Header>Başlık 1</Header><%--Başlık--%>
<Content>Panel 1</Content><%--İçerik--%>
</cc1:AccordionPane>
<cc1:AccordionPane ID="AccordionPane2" runat="server">
<Header>Başlık 2</Header> 
<Content>Panel 2</Content> 
</cc1:AccordionPane>
<cc1:AccordionPane ID="AccordionPane3" runat="server">
<Header>Başlık 3</Header>
<Content>Panel 3</Content>
</cc1:AccordionPane>
<cc1:AccordionPane ID="AccordionPane4" runat="server">
<Header>Başlık 4</Header>
<Content>Panel 4</Content>
</cc1:AccordionPane>
</Panes>
</cc1:Accordion>

 

Eğer AccordionPanelerimizi eklediysek işimiz bitmiştir. Gördüğünüz üzere her paneli ayrı renklerdirdim istediğiniz kadar panel ekleyebilirsiniz veya silebilirsiniz. F5 yaparak projemizi çalıştıralım. Göreceğimiz üzre görsellikten yoksun bir Accordionumuz var.Projemize sağ tıklayarak Add > New Item diyerek 1 adet StyleSheet ekliyoruz bu bilindik bir css dosyasıdır. İsmini style.css olarak verebilirsiniz. Accordionumuzun görsel kısmını bu css dosyamızda tanımlayacağız.

.accordionContent{
background-color: #C0C0C0;
border: thin dashed #808080;
font-size: medium;
font-family: calibri;
}

.accordionHeader{
font-family: calibri;
font-size: medium;
background-color: #008080;
border: thin solid #808080;
}

 

Şimdi ise oluşturduğumuz bu css dosyasını projemızde tanımlatmalıyız.Bunun için sayfamızdaki <head></head> tagları arasına

<link href="style.css" rel="stylesheet" type="text/css" />

Ekleyerek css`imizide tanımlatıyoruz.
Şuanda çalıştırdığınızda küçük ama bizim bir accordion çıkacaktır bunu büyüretek kendi accordionlarınızı yapabilirsiniz bu şekilde menüler, manşet sistemleri ve hatta direk siteler yapabilirsiniz aslında farklıda olabilir o sizin hayal gücünüze kalmış tabiki de.Bir sonraki makalede görüşmek dileğiyle..
Sorularınızı yorum kısmından sorabilirsiniz..