Tags: , , | Categories: Fun, Hata Posted by okutbay on 26.04.2012 22:01 | Yorumlar (0)

Garip microsoft hatalarına oldukça alışık bir insan olmama rağmen halen beni şaşırtmayı başaran hatalar çıkabiliyor.

Tebrik ediyorum.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: SSS (FAQ), Tip, Web Uygulaması Posted by okutbay on 08.09.2009 09:27 | Yorumlar (0)

When you are using the SiteMapPath control page Urls with the querystrings, pages don't show the control. Because url can't be matched with url in your Web.Sitemap file.

To handle this situation, a little web.sitemap file trick is enough. Write the static part of your Url and define the dynamic querystring parameters at "reliantOn" attribute.

Sample Web.sitemap node definiton:

    1 <siteMapNode url="~/a.aspx?p=add" title="ABC" reliantOn="Id" />

Happy codings...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: SSS (FAQ), Web Uygulaması Posted by okutbay on 27.08.2009 12:00 | Yorumlar (0)

In .NET world it's very common to write methods with same name but different parameters. This is called overloading. And if you use this technique wisely you can prevent some code repetation.

But in the web services world of .net its not allowed by default. If you try you get an exception says : "Bla, bla, bla. Use the MessageName property of the WebMethod custom attribute to specify unique message names for the methods."

Server Error in '/ICFWebServices' Application.

Both ICFWebServices.Entities.Portal GetCategorizedRoomData(System.String) and ICFWebServices.Entities.Portal GetCategorizedRoomData() use the message name 'GetCategorizedRoomData'.  Use the MessageName property of the WebMethod custom attribute to specify unique message names for the methods. 

First you must differ your methods with WebMethod's properties.

 

    1 [WebMethod(MessageName = "GetCategorizedRoomData",

    2      Description = "Gets the room list for configured portal name")]

    3 public Portal GetCategorizedRoomData()

    4 {

    5     string portal = "ICanFootball"; //Buraya web.configden portal okuma gelecek

    6     return populateCategorizedRoomData(portal);

    7 }

    8 

    9 [WebMethod(MessageName = "GetCategorizedRoomDataByPortalName",

   10      Description = "Gets the room list for given portal name")]

   11 public Portal GetCategorizedRoomData(string Portal)

   12 {

   13     return populateCategorizedRoomData(Portal);

   14 }

 Second you have to change your web service class Wsi profile to none

    1 [WebService(Namespace = "http://tempuri.org/")]

    2 [WebServiceBinding(ConformsTo = WsiProfiles.None)]

    3 public class RoomService : System.Web.Services.WebService

    4 {

If you forget step 2 you get an exception like

Server Error in '/ICFWebServices' Application.

Service 'ICFWebServices.RoomService' does not conform to WS-I Basic Profile v1.1. Please examine each of the normative statement violations below. To turn off conformance check set the ConformanceClaims property on corresponding WebServiceBinding attribute to WsiClaims.None.
R2304: Operation name overloading in a wsdl:portType is disallowed by the Profile. A wsdl:portType in a DESCRIPTION MUST have operations with distinct values for their name attributes. Note that this requirement applies only to the wsdl:operations within a given wsdl:portType. A wsdl:portType may have wsdl:operations with names that are the same as those found in other wsdl:portTypes.
 -  Operation 'GetCategorizedRoomData' on portType 'RoomServiceSoap' from namespace 'http://tempuri.org/'.
To make service conformant please make sure that all web methods belonging to the same binding have unique names.
 

Happy coding.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , | Categories: SSS (FAQ), Web Uygulaması Posted by okutbay on 20.08.2009 11:37 | Yorumlar (0)

Sometimes you need to use Http handlers to respond to requests rather than classical asp.net pages. At that times if you want to use session objects you will see that HttpContext.Current.Session is null.

If you want to read session state from you http handler your http handler must implement System.Web.SessionState.IReadOnlySessionState interface. If you want to modify the session state you can implement System.Web.SessionState.IRequiresSessionState.

Sample:

    1 public class Login : IHttpHandler, SessionState.IRequiresSessionState

Happy coding.

3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , , | Categories: Hata, Web Uygulaması Posted by okutbay on 18.06.2009 14:47 | Yorumlar (0)

İş yerinde geliştirmekte olduğumuz projelerde şimdiye kadar MVC Framework Preview 3 kullanmaktaydık. ASP.NET ten farklı çalışma mekanizması nedeniyle yukardaki hatayı sık sık alır ve  ValidateRequest = false yapmamıza rağmen sorunu aşamazdık. Çünkü post edilen bilgi önce kontroller a düşmekte ve exception oluşmaktaydı.

Peki temel olarak bu hatanın nedei neydi. Önce bunu bir hatırlayalım. 

ASP.NET kullanan yazılımcılar form alanlarından gelebilecek zararlı kodlara karşı daha fazla korunmaya sahiptirler. Yapılabilecek XSS (Cross site script) saldırılarını önlemek yapılan tüm istekler bir geçerlilik kontrolü (validation) işleminden geçer. Bu işlemde temel olarak script bloklarını başlatan ve bitiren taglerde yer alan < ve > işaretleri aranır. Bulunduğu zaman da "System.Web.HttpRequestValidationException" oluşturulur.

Bu sorunu geçiştirmek için sayfa seviyesinde ya da uygulama seviyesinde (ki bu hiç mi hiç tavsiye edilmez.) Geçerlilik kontrolünü kapatabilirsiniz. Bu durumda dış kaynaklardan gelen tüm girdileri zararlı olabilecek metinlere, karakterlere karşı kontrol etmeniz ve filtrelemeniz gerekmektedir.

Bizim durumumuzda ise hiçbir şekilde bu geçerlilik kontrolü geçiştirilememekteydi. Ta ki MVC 1.0  çıkana kadar. Aslında bu özellik Preview 4 ile birlikte gelmesine rağmen biz 3 den direkt olarak MVC 1.0 a atladığımızdan burada farkına varabildik.

Bu yenilik sayesinde controller class tanımımız ya da herhangi bir controller action metod tanımımız için "istek geçerlilik kontrolü"nü devre dışı bırakabiliyoruz.

Şöyle ki: 

    1 [ValidateInput(false)]

Bu öznitelik (attribute) sayesinde konulduğu yere göre ilgili controller sınıfının tüm metodları ya da sadece belirli action metodları için bu özellik iptal edilebilmekte.

sınıf Seviyesinde kullanım 

    1 [ValidateInput(false)]

    2 public class BilgilerController : Controller

    3 {

    4 }

 Controller Action seviyesinde kullanım 

    1 [ValidateInput(false)]

    2 public ActionResult BilgilerFormIslem()

    3 {

    4     return View("abc");

    5 }

Böylece ilgili sayfalarda HTML kod kabul eden editör vb. kontroller kullanabiliyoruz. Tabi tekrar hatırlatalım. Bu durumda gelen içeriğin güvenli olup olmadığının denetlenmesi ya da filtrelenmesi yazılımcı tarafından gerçekleştirilmek zorunda...

Kolay gelsin... 

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , | Categories: SSS (FAQ), Uygulama Posted by okutbay on 11.06.2009 10:59 | Yorumlar (0)

Geliştirme yapanların dünyasında denizler çok çalkantılıdır... Bu denizlerde mide bulantısından en az şekilde etkilenebilmeleri için sahip oldukları araçlardan en iyi şekilde istifade etmesini bilmelidir. Bu amaçla geliştirme yaparken kullanılabilecek araçlardan biri de Virtual PC 2007 yazılımı. Bu yazılım ile bilgisayarınız üzerinde farklı donanım ve yazılım özelliklerine sahip test ve geliştirme ortamları oluşturabilirsiniz.

Bu yazıda uygulamayı kullanan biri olarak bir "Sık Sorulan Sorular" listesi oluşturmaya çalışacağım.

1- Tam ekran moduna nasıl geçerim?

Tam ekran moduna geçmek için sağdaki alt tuşu olan Alt Gr ve Enter tuşuna basmalısınız. Tam ekrandan çıkmak için de yine Alt Gr+Enter kullanılır.

2- Alt Gr tuşu çalışmıyor, @[]£#$½{}\ gibi 3. karekterleri nasıl yazarım?

Belirtilen karakterleri yazmak için Alt Gr yerine Crtl+Alt kullanabilirsiniz. Bu iş için Alt Gr tuşunu kullanmak istiyorsanız, VPC seçeneklerinden Keybord Host Key olarak daha az kullanılan bir tuşu örneğin "scroll lock" ayarlayabilirsiniz.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Posted by okutbay on 13.10.2008 16:20 | Yorumlar (0)
C# dili 3.0 ile lambda fonsiyonları, LINQ, ve 3.5 versiyonuyla beraber anonim tipler gibi yeniliklerin yanında uzatım metodlarını da duyurdu. Bu yazımızda dilimiz döndüğünce bu metodları sizlere anlatmaya çalışacağım.. Adından da anlaşılacağı üzerine bu metolar mevcut tiplere (sınıflara) ilave olarak onların işlevlerini uzatan, genişleten metodlar diyebiliriz. Eğer siz bir sınıf geliştirmiş ve bunu bileşen olarak internet üzerinden insaların indirip uygulamalarında kullanmasını istiyorsanız bu bileşenin yanında dokümantasyonun da vermeniz gerekir. Böylece bileşeni kullanmak isteyen kişiler dokümantasyondan faydalanarak sınıfınızı kullanmaya başlayabilirler... Peki bu uzatım metodları olayın neresinde? Henüz bir yerinde değil aslında... Bu yöntemle yazmış olduğunuz bileşen içindeki metodların diğer .NET tiplerinin bir uzantısı olarak görünmesini sağlayabiliyorsunuz. Yani mevcut tiplerin özelliklerini genişletebiliyorsunuz... İçinizden "Ne var bunda. Zaten o tipleri miras yoluylaya alıp mevcut metodları geliştiremiyor muyuz?" diye sorduğunuzu duyar gibiyim... Evet izin verilmiş taban sınıftaki metodları ezerek (override) kendi işlevselliğinizi geliştirebilirsiniz tabi ki. Ama bizim bahsettiğimiz. Mevcut bir tipi miras yoluyla yeni bir tipe alarak onun üstüne ilaveler yapmak değil... Tekrar ediyorum: Amacımız mevcut tiplere ilave metodlar yazmak... Örneğin kişi string tipinde bir değişken tanımlandığında değişken adından sonra nokta diyerek nesnenin üyelerine baktığında orada sizin ilave etmiş olduğunuz metodu görebilecek ve kullanabilecektir... Bu yöntemin bir diğer faydası da sizin bileşeninizi kullanan kişilerin yeni bir tipi ve özelliklerini öğrenmeye, onun kopyalarını oluşturmaya gerek duymadan mevcut tipleri ile yeni metodlarınızı kullanmaya başlayacak olmalarıdır... Çok laf ettik değil mi? Az laf çok iş diyelim... Olayı netleştirmek için bir örnek üzerinde açıklayalım... Diyelim ki bir proje üzerinde çalışıyoruz... Bu projede girilen metinler içindeki boşlukların yerine "-" koymamız gereksin. Normal şartlarda ya yeni bir class içine ya mevcut classlar içine istenen işi yapan bir metod ilave ederiz.
public class StringMetodlarim { public static string MyFilter(string TextToFilter) { return TextToFilter.Replace(" ", "-"); } }
Yazılan bu metodu uygulamamızda (Bu örneğimiz için bir console uygulaması olsun) kullanmak için şuna benzer satırlar yazabiliriz:
class Program { static void Main(string[] args) { string myString = "Ozan Kutlu BAYRAM"; Console.WriteLine(StringMetodlarim.MyFilter(myString)); } }
Uygulamayı çalıştırdığımızda ekran üzerinde şöyle bir çıktı görünür: Ozan-Kutlu-BAYRAM Press any key to continue . . . Not: Yazılan yeni sınıfın Program sınıfı ile aynı isim alanında (namespace) olduğunu unutmayın. Farklı bir isim alanı içinde bu sınıfı tanımladınız ise sınıfı, Program sınıfından kullanabilmek için tanımladığınız isim alanını using direktifi ile tanıtın ya da açık yazım ile sınıfı kullanın (isimalani.sinifismi şeklinde) Şimdiye kadar yaptıklarımızı eskiden beri yaptığımız şeylerle aynıydı... Peki ya ben tanımladığım string değişkeni yazdığımın sınıfın metoduna parametre olarak geçirmek yerine "myString.MyFilter()" diyebilsem iyi olmaz mı? Evet diyorsanız işte uzatım metodlarının oyuna girdiği yer tam da burası... Yazdığını MyFilter metodunu string tipine ilave olarak eklemek için onu uzatım metodu olarak tanımlamamız gerekecek... Bu metoduda ayrı bir sınıf içinde yazalım...
public static class MyExtensions { public static string MyFilter(this string TextToFilter) { return TextToFilter.Replace(" ","-"); } }
bu metoda baktığımızda diğer metoddan tek farkının parametresinden önce aldığı this kelimesinin olduğunu farketmişsinizdir... İşte bu metodu uzatım metodu yapan sadece bu tek kelime... İşin geri kalanını bizim için C# derleyicisi hallediyor. Artık uygulamamız içinde ne zaman bir string tipinde değişken yaratsak yanında nokta ile başladığımızda bu uzatım metodunun da listelendiğini görebiliriz... Bu metodu mevcut örneğimizde kullanmak için tek yapmamız gereken:
class Program { static void Main(string[] args) { string myString = "Ozan Kutlu BAYRAM"; Console.WriteLine(myString.MyFilter()); } }
Klavyeleriniz şen ola... Tüm Uygulama
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Text;
    4 
    5 namespace ExtensionMethods
    6 {
    7     class Program
    8     {
    9         static void Main(string[] args)
   10         {
   11             string myString = "Ozan Kutlu BAYRAM";
   12             Console.WriteLine(StringMetodlarim.MyFilter(myString));
   13             Console.WriteLine(myString.MyFilter());
   14         }
   15     }
   16 
   17     public static class MyExtensions
   18     {
   19         public static string MyFilter(this string TextToFilter)
   20         {
   21             return TextToFilter.Replace(" ", "-");
   22         }
   23     }
   24 
   25     public class StringMetodlarim
   26     {
   27         public static string MyFilter(string TextToFilter)
   28         {
   29             return TextToFilter.Replace(" ", "-");
   30         }
   31     }
   32 }

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Categories: Genel, Programlama, Tanıtım Posted by okutbay on 19.12.2007 09:25 | Yorumlar (0)
F# (f şarp okunur), .NET Framework için tiplendirilmiş işlevsel programlama dilidir.

F#, yüksek kaliteli, iyi desteklenen modern bir runtime sistemi üzerinde çalışmanın tüm avantajları ile tip güvenliği, başarım ve betik yazımının (scripting) çok arzu edilen bileşimini sağlar.

Bu anlamda F#, betik/işlevsel/emreden/nesne yönelimli programlama dilidir. Bir çok pratik bilimsel, mühendislik ve web tabanlı programlama görevleri için temel oluşturur.

F# programlama dili ile yapılan yazılımlar .NET Framework üzerinde çalışırlar.

F#, .NET Framework için tiplendirilmiş işlevsel programlama dilidir.

F#, OCaml ile aynı çekirdek dili paylaşan bir tür ML dilidir.

F# diline yapısal olarak baktığımızda program bir dizi ifadenin tanımlayıcılara bağlanmasından oluşmaktadır.

F# kodları Microsoft F# sayfasından indirilebilecek F# Interactive (fsi.exe) dosyası ile doğrudan çalıştırılabilir. Dikkat ederseniz girişleri ayırmak için satır sonlarında ";;" kullanılmaktadır.

Kodlar satır satır fsi.exe konsol uygulaması ile çalıştırılır. Konsol uygulamasına girdikten sonra aşağıdaki satırları yazarak deneyebilirsiniz.

let x = 3 + (4 * 5);;
let res = (if x = 23 then "doğru" else "yanlış");;
System.Console.WriteLine(res);;

Aynı zamanda yazdığımız bu kodları .fs uzantılı bir metin dosyaya kayderek F# derleyici (fsc.exe) programı ile derlenebiliriz.

Derleme:
> fsc test.fs

Çalıştırma:
> test.exe


Not: Dosya uzantısı olarak .ml uzantısını kullanmayı da tercih edebilirsiniz.

Tüm bunlara ilave olarak kodunuz kütüphane içine de yerleştirebilirsiniz.

lib.fs dosyası:
let myLibFunction() = System.Console.WriteLine("Hello World")

hello.fs dosyası:
let main = Lib.myLibFunction()

Burada main bir fonksiyon değildir. Sadece = işaretinin sağ tarafında gerçekleştirilen ifadenin sonucunu taşımak için bir dummy değerdir.

Dosyaları derlenmek için:
> fsc -a lib.fs
> fsc -r lib.dll hello.fs


Derleme sonucunda lib.dll kütüphanesi ve hello.exe çalıştırılabilir dosyaları oluşturulur. Bu dosyaların her ikisi de .NET montaj (assembly) dosyalarıdır.İsteseniz tek bir exe dosya oluşturacak şekilde dosyaları beraberce derleyebiliriz.

Dosyaları beraber tek exe olarak derlenmek için:
> fsc -o hello2.exe lib.fs hello.fs

Klavyeleriniz şen ola...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Categories: Programlama, Tanıtım, Web Uygulaması Posted by okutbay on 23.09.2007 02:13 | Yorumlar (0)
Microsoft® Silverlight™ Web için zengin etkileşimli uygulamalar ve .NET tabanlı medya deneyimlerinin yeni neslini sunan tüm tarayıcı ve platformlar için geliştirilmiş bir eklentidir.

Silverlight , mevcut web uygulamaları ile entegre olabilen AJAX, VB, C#, Python ve Ruby destekleyen esnek bir programlama modeli sunmaktadır.
MacOS ve Windows üzerinde çalışan tüm ana tarayıcı uygulamalarına yüksek kaliteli videonun hızlı ve düşük maliyetle sunumu destekler.

Silverlight teknolojisini kullanan sayfaları tarayınızıda görebilmniz için Silverlight eklentisini bilgisayarınıza kurmanız yeterlidir. Şu an 1.0 sürümü olan eklentinin 1.1 Alpha sürümü de hali hazırda denenmektedir.

Eğer siz de Silverlight uygulaması geliştirmek isterseniz bu sefer de Silverlight SDK edinmeniz gerekmektedir. SDK içinden çıkan "silverlight.js" dosyası silverlight teknolojisini kullanabilmeniz için asgari gerekliliktir. Bu dosya silverlight öğelerini göstermek istediğiniz tüm sayfaların <head> bölümüne eklenmelidir.

Aşağıdaki örnekte js klasörü altında bulunan silverlight.js dosyasının sayfa eklenişi gösterilmektedir.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Silverlight Deneme</title>
<script type="text/javascript" src="js/Silverlight.js"></script>
</head>
<body>
</body>
</html>

Bundan sonra silverlight nesnelerini barındıracak div bölümünü tanımlamak ve tanımlanan bu div bölümü içinde gösterilecek silverlight nesnesinin javascript kullanılarak oluşturulması gerekecektir.

<div id="slhost"></div>
<script type="text/javascript">
var parentElement = document.getElementById(`slhost`);
createsl();
</script>

Yurakıdaki örnekte slhost adına sahip bir div ve bu div tagi ile etkileşerek silverlight nesnesini oluşturacak javascript metoduna çağrı oluşturuldu. Bu metodu doğrudan burada yazmak yerine oluşturacağımız ayrı bir dosya içine yerleştirdik ve buradan sadece createsl metoduna çağrı yaptık. createsl metodumuz şöyle bir metod olmalıdır.

function createsl()
{
Silverlight.createObject("myxaml.xaml", parentElement, "mySilverlightPlugin",{width:`800`, height:`600`, inplaceInstallPrompt:true, background:`#fff`, isWindowless:`false`, framerate:`24`, version:`1.0`}, {onError:null, onLoad:null}, null);
}

createsl metodu silverlight.js içindeki .createObject metodunu çağırarak silverlight nesnesini oluşturmaktadır. Fonksiyon incelenirse parametreler ile işlenecek xaml dosyası, nesnenin yerleştirileceği div (parentElement), genişlik, yükseklik, silverlight kurulu olmadığı zaman nesne yerinde kurulum uyarısının görüntülenip görüntülenmeyeceği, zemin rengi, saniyedeki çerçeve sayısı, silverlight versiyonu gibi değerler tanımlanmıştır. Bu metodu "CreateSilverlight.js" dosyası içine yazıp javascriptlerimizin bulunduğu js klasörüne yerleştirdikten sonra ilk örneğimizde silverlight.js dosyasını eklediğimiz gibi bu dosyayı da ekleyerek tanıtmamız gerekir.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Silverlight Deneme</title>
<script type="text/javascript" src="js/Silverlight.js"></script>
<script type="text/javascript" src="js/CreateSilverlight.js"></script>
</head>
<body>
<div id="slhost"></div>
<script type="text/javascript">
var parentElement = document.getElementById(`slhost`);
createsl();
</script>
</body>
</html>



Artık silverlight nesnelerini createsl metodu içinde tanımlamış olduğumuz XAML dosyası içinde oluşturmaya başlayabiliriz.

Bağlantılar:

Official Site
http://www.microsoft.com/silverlight/

Microsoft portal site for the Silverlight development community
http://www.silverlight.net/

Diğer Faydalı bağlantılar:
http://www.silverlightcream.com/
http://www.wynapse.com/

Klavyeleriniz şen ola... 
 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5