Unable to get the private bytes memory limit for the W3WP process. Error: 0×80070005

.NET, ASP.NET, Internet Information Services, Windows 2003 Server, Yazılım Yorum Yapılmamış »

HATA : Unable to get the private bytes memory limit for the W3WP process. The ASP.NET cache will be unable to limit its memory use, which may lead to a process restart. Error: 0×80070005

ASP.NET ile bir proje geliştirdiniz, sunucuya deploy ettiniz ve her şey beklediğiniz gibi gayet güzel çalışıyor. Gördünüz, test ettiniz…

Ancak sunucu üzerinde EventLog’lar üzerinde gezinirken yukarıdaki hatayı içeren birçok girdi gördünüz…Pek üzerinde durmadınız hatanın, logları temizlediniz…

Bir süre sonra loglarda bu hatanın yeniden ve çok fazla sayıda olduğunu fark ettiniz! Can sıkıcı bir durum, eğer bir de benim gibi bir yazılımcıysanız herşeyin tıkır tıkır yürümesini isteyen -alınan hata, uyarı uygulamanın çalışmasına engel olmasa bile- bir tipseniz yerinizde duramazsınız. Ve evet itiraf ediyorum, bilgisayarın başına oturunca uzun süre masanın başından kalkamama sebeplerimin başında geliyor bu özelliğim…İyi mi kötü mü bilemiyorum…

Neyse asıl konumuza dönelim…Yukarıdaki hatanın nedeni arkadaşlar, IIS Metabase dosyanızın iki nodunda IIS_WPG grubu için yeterli izinlerin olmamasıdır. Nedir bu nodlar peki,

  • W3SVC/AppPools
  • W3SVC/Filters

Çözüm mü? O kolay…

Metabase dosyanızda bu nodlara IIS_WPG grubu için gerekli izinleri eklemelisiniz.

http://u2m.me/dV

Bu adresten Microsoft’un MetaACL uygulamasını indirin ve dosyaları açtığınız -indirdiğiniz exe’yi bir klasöre açacaksınız- dizin içerisinde komut satırında aşağıdaki komutları çalıştırın.

- cscript metaacl.vbs IIS://Localhost/W3SVC/AppPools IIS_WPG RE
- cscript metaacl.vbs IIS://Localhost/W3SVC/Filters IIS_WPG RE

Tebrikler! Artık sunucu loglarınızda yukarıdaki can sıkıcı hatayı görmeyeceksiniz.

DevExpress DXperience Universal 2010.1.5

.NET, ADO.NET, ASP.NET, Visual C#.NET, Yazılım 26 Yorum Yapılmış »

DevExpress ile ilgili yazdığım yazılar blog sayfamda en fazla yorum yapılan, ziyaret edilen bölümler…

http://u2m.me/b!

Bu yazımda DevExpress v2009 Volume 1′i duyurmuşum ancak aradan nerden baksanız 1 yıl geçmiş. Eee linklerin de yenilenmesi lazım haliyle…İşte size DevExpress’in piyasadaki en son sürümü…

DevExpress DXperience Universal 2010.1.5

SEÇENEK 1…

Components/Bileşenler
http://u2m.me/c7

Documentation/Dökümentasyon
http://u2m.me/cc

Localized Assemblies/Yerelleştirilmiş Assembly’ler
http://u2m.me/cb

SEÇENEK 2

DexExpress’in resmi sitesinden DevExpress DXperience Universal 2010.1.5 paketini indirin
http://u2m.me/ce

Aşağıdaki linkten de crack’i indirin
http://u2m.nu/cg

Crack’in uygulayın ve hepsi bu kadar :)

ASP.NET ve SQL Server sözlük scripti!

ASP.NET, Ajax&Atlas, SQL Server Yorum Yapılmamış »

Sözlüğün Tarihçesi : http://www.fobiksozluk.com/History.aspx

Uzun zamandan beri www.fobiksozluk.com ile ilgili ne yapmam gerektiğine karar vermeye çalışıyordum. Önceleri açık kaynak kod olarak paylaşmak istedim ve bir takım araştırmalar yaptım bu konuyla ilgili. Sağolsun Salih adlı bir arkadaş internet sitemden bana ulaştı ve kodları paylaşmam durumunda birilerinin alıp bu kodları para ile satabileceği ihtimalinin olduğunu belirtti. Dolayısıyla ben de bu açık kaynak kod olayından vazgeçtim…

Yine aynı arkadaş (Salih) bazı kişilerin para karşılığı sözlük kodlarını sattığını ifade etti. Bunun üzerine ben de www.fobiksozluk.com uygulamasını düşük bir ücret karşılığında -malumunuz…askerden yeni geldim, para yok pul yok:)- sizlere sunmaya karar verdim. Bunun için iki seçenek önerim var:

  1. Kodlar kapalı kalır ve uygulamayı satın alan kişi(ler) kodlara müdahale edemezler (Ucuz).
  2. Kodlar tamamen açık olarak verilir ve kullanıcılar kodlara müdahele edebilirler (Pahalı).

Shared Hosting planlarında ASP.NET ve SQL Server kullanımı ile ilgili bir takım sıkıntılar çıkabiliyor hepinizin bildiği üzere. Dolayısıyla yukarıda sunduğum her iki seçenek için de kendi şirketim olan (henüz somut bişey yok! Yalnızca bir sunucu) www.abbsolutions.com sunucusu üzerinden hosting verebilirim. Yine ufak bir ücret karşılığında tabii…Sunucu seçiminin avantajı şu olur, sunucuya her türlü müdahale yapabiliyoruz. No problemo :)

Saat 03:37, uyumam lazım artık! Bu saatte bu kafayla (kaddet.com ile uğraşıyorum -kaddet.com ne mi? yakında…) umarım abuk sabuk fikirler sunmamışımdır. Yukarıdaki seçenekleri uygun bulan arkadaşlar fiyat, detay vs. için lütfen benimle iletişim kursunlar…

Sözlüğün teknik detaylarına gelince…

  • ASP.NET (C#) kullanılarak ve .NET Framework 3.5 sürümü hedef alınarak yazıldı.
  • AJAX teknolojileri ve DevExpress componentleri sık sık kullanıldı.
  • Girdilere resim ve video ekleme özelliği mevcut.
  • SQL Server 2000 ve üzeri sürümlerinde (2005, 2008) çalışabilir.
  • Son versiyonu 14.09.2009′da çıkartılan 4.2.0 dır.
  • Tema desteği mevcut (4 temel tema varsayılan olarak geliyor zaten), dilerseniz kendi temanızı oluşturabilirsiniz.

İletişim adresleri:

Haydi vatana millete hayırlı olsun bakalım…

The request failed with HTTP status 400: Bad Request.

.NET, ASP.NET, Web Programlama Yorum Yapılmamış »

Projelerinizde .NET Web Servislerini kullanırken böyle bir hata ile karşılaşabilirsiniz. Bu hatanın nedeni aşağıdakilar olabilir (ve büyük olasılıkla ikinci seçenek!)

  1. Kullandığınız Web Servisinin HTTP üzerinden erişilip erişilmediğini kontrol edin. Web Servisiniz çalışmıyor olabilir ve bu durumda böyle bir hata almanız gayet normal.
  2. Web Servisinizin parametrelerine gönderdiğiniz değerleri kontrol edin! Anlamsız bir takım karakterler içeren bir parametre olduğuda da böyle bir hata almanız muhtemel! Ben bu hatayı aldığımda şu değeri parametre olarak web servisine göndermeye çalışıyordum -> “×Tp?eˆµ£6eْ𓯌«7Y¡,üCœ¶s‘ˆÇ¢J”

Web Servisine gönderdiğim parametre değerlerini düzelttim ve çözüme ulaştım ben. Umarım sizin de işinize yarar…

The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

ASP.NET, Yazılım Yorum Yapılmamış »

fobiksozluk.com‘da karşılaştığım önemli problemlerden birisi de buydu. Bu projede kullandığım bir hata ayıklama sistemi ile hataları hem event log’a hem de fiziksel bir dosyaya yazıyordum ve daha sonra bu logları incelediğimde,

“Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occured because all pooled connections were in use and max pool size was reached.”

hataları görüyodum çokça. Sorunun çözümüne ilişkin bulduğum verileri sizlerle de paylaşmak istiyorum. Eminim bir çoğunuz bu sorunla karşılaşmışsınızdır. En azından bu yazıyı okuyor olmanız bu sorunu yaşadığınızı gösterir dimi :)

Şimdi efenim öncelikle sorunun neden(ler)i nedir ona bir göz atalım. Bu soruna genellikle kod içerisinde açılan ancak kapatılması unutulan (ya da kapatılması kontrol edilmeyen) Connection’lar neden olur. Bu kapatılmayan Connection’lar ise Connection Pool içerisinde tanımlı max. Connection sayısına ulaştığında sistem her yeni Connection açmaya çalıştığında bu hatayı alırsınız (Ortaya çıkan bu duruma da Connection Leak adı verilir). Örnek vermek gerekirse,

SqlConnection conn = new SqlConnection(myConnectionString);
conn.Open();
biSeylerYap();
conn.Close();

Eğer biSeylerYap() metodu bir hata üretirse açılan Connection kapanmayacaktır. Bu durumu da şu şekilde düzeltemek mümkündür:

SqlConnection conn = new SqlConnection(myConnectionString);
try
{
conn.Open();
biSeylerYap(conn);
}
finally
{
conn.Close();
}

dolayısıyla kodunuzun içerisinde Connection Leak oluşturabilecek durumlardan kaçınmanız gerekir.

Sonuç olarak bu hatayı ortadan kaldırmak için aşağıdaki önlemleri almanızı öneriyorum.

1. Kodunuzun içerisinde veri tabanınıza açtığınız her bağlantının uygun bir şekilde kapatıldığından emin olun. ASP.NET kullanılmayan kaynakları temizleyen bir yapıya zaten sahiptir (garbage collector). Ancak çok yoğun bir sitede Connection Pool içerisindeki bağlantıların garbage collector onları temizlemeden önce tükenmesi çok muhtemeldir.

2. Connection Pool boyutunu arttırabilirsiniz. Connection Pool boyutu connection string içerisinde tanımlanır. Örneğin Connection String içerisine “Max Pool Size=100” ifadesini eklediğinizde Connection Pool boyutunu 100′e çıkartmış olursunuz.

hadi bakalım…

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occured because all pooled connections were in use and max pool size was reached.

The constructor to deserialize an object of ‘xxx’ was not found

.NET, ASP.NET, Visual C#.NET Yorum Yapılmamış »

Eveeeet başka bir Maykrosoft .NET günlüğüne hoşgeldiniz…Bugünki sorun nedir???

Oturdunuz, çok heveslisiniz, .NET framework kullanarak şahane bir uygulama yazmaya karar verdiniz. Ama o da ne? ISerializable implement eden bir sınıftan türettiğiniz bir sınıfı Deserialize ederken aşağıdaki problemle karşılaştınız.

The constructor to deserialize an object of ‘xxx’ was not found

Ama abi Serialize ederken sorun olmuyo, bu niye böyle yapıyo şimdi? dediğinizi duyar gibiyim :) :) Bill amcaya yine selamlarınızı mı ilettiniz gizliden gizliden, ya da niye gizli olsun, bağıra bağıra :) :)

Durun, rahat bir nefes alın, çözüm burda…

Ne geyik yaptım şaka maka :) Neyse şakayı bir kenara bırakalım arkadaşlar bir süre için. Yukarıda da kısaca bahsettiğim gibi, ISerializable arayüzünü implement eden bir sınıftan türettiğiniz bir sınıfı deserialize ederken yukarıdaki hatayı almanız muhtemel. Bu sorunun nedeni ise ISerializable arayüzünü gerçekleyen bir sınıftan türettiğiniz bir sınıf, ISerializable metotlarını da gerçeklemelidir (serialization ve deserialization işlemleri için ayrı ayrı). Siz büyük ihtimalle bu kısmı atladınız, es geçtiniz ya da bilmiyorsunuz.

Örnek verelim,

[Serializable]
class Test: Hashtable
{
public
Test()
{
}
}

gibi bir sınıf oluşturdunuz. Görüldüğü üzere bu sınıf ISerializable arayüzünü gerçekleyen Hashtable sınıfından türetilmiş. İşte bu “Test” adlı sınıfımızı deserialize işlemine tabi tuttuğumuzda yukarıdaki hatayı alacağız. Bu hatayı engellemek için ise ISerializable arayüzüne ait,

protected Test(SerializationInfo info, StreamingContext context) : base(info, context) { }

constructor ını da gerçeklemeniz gerekmektedir. Yukarıdaki sınıfa bu constructor da eklenirse yukarıdaki hatanın oluşması engellenmiş olur çünkü bu constructor, ilgili sınıfın deserialization işleminde kullanılır.

Son bir not daha düşelim, eğer serialize etmek istediğiniz ek veriler varsa, ISerializable arayüzüne ait GetObjectData() metodunu da gerçeklemeniz gerekiyor arkadaşlar. Benden söylemesi…

Unrecognized attribute ‘type’

ASP.NET Yorum Yapılmamış »

ASP.NET ile çalışan arkadaşlar uygulamalarında aşağıdakine benzer bir hata alıyorlarsa,

Unrecognized attribute ‘xxxx’  (Unrecognized attribute ‘type’ gibi)
büyük bir ihtimalle ilgili ASP.NET uygulamasının, IIS (internet information services) üzerindeki ASP.NET versiyonunun güncel olmamasından dolayı yaşıyordur bu problemi. Sorunu çözümlemek için, IIS üzerinden ilgili sitenin üzerinde sağ tıklayıp özelliklerine giriyoruz. Özellikler pencerinde ASP.NET sekmesine gidip aşağıdaki gibi ASP.NET versiyonunu en güncel hale getiriyoruz.

IIS (Internet Information Services)

Windows servislerinde hata ayıklaması

ASP.NET, Web Programlama Yorum Yapılmamış »

Şimdi efendim bilen bilir, Maykrosoft Visual Studio.NET ile çalışırken, bir windows service yazdığınızda, yazdığınız servis üzerinde hata ayıklaması yapamıyorsunuz normal koşullarda. Yok efendim neymiş Windows Servislerinde debugging yapılmazmış, mıy mıy mıy, bok püsür. Tipik Maykrosoft davranışı :)

Eee böyle bir durumda da yazılımcılar gayet zorluk yaşıyorlar, yazdıkları servisin nasıl davrandığını test edemiyorlar, hata ayıklaması yapamıyorlar. Dolayısıyla bu da ortaya çıkacak olan servisin, uygulamanın gecikmesine neden oluyor.

Şimdi efenim peki biz bu sorunu nasıl aşıcaz? Şöyle ki,

Visual Studio.NET’te bir Windows Service projesi oluşturduğunuzda, şablon olarak karşınıza Main() metodu aşağıdaki gibi bir şablonla gelecek.

// The main entry point for the process
static void Main()
{
    System.ServiceProcess.ServiceBase[] ServicesToRun;
 
    // More than one user Service may run within the same process. To add
 
    // another service to this process, change the following line to
 
    // create a second service object. For example,
 
    //
 
    // ServicesToRun = new
 
    //      System.ServiceProcess.ServiceBase[] {new Service1(),
 
    //      new MySecondUserService()};
 
    //
 
    ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
    System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}

ve siz de bu şablon üzerinden servisinizi yazmaya başlayacaksınız ama servisinizi debug

edemeyeceksiniz. Bunun için Main() metodunda aşağıdaki gibi ufak bir değişiklik yapmanız gerekiyor.

// The main entry point for the process
static void Main()
{
#if (!DEBUG)
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
#else
// Debug kodu: bu kısım process'in servis olarak çalışmasını önler
 
// Servisin başlangıç metodunu çalıştıracak ancak processi hiçbir zaman öldürmeyecek
 
// Çıkmak için debugger'ı kapatmanız gerekiyor
 
Service1 service = new Service1();
service.<Servisinizin birincil metodunu buraya yazın>();
// Aşağıdaki satırın önüne bir breakpoint koyarak servisinizin
// hemen bitişinde onu yakalayabilirsiniz
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
#endif
}

Bir windows servisini debug etmek için C# direktiflerini kullanarak servisin debug modunda farklı bir kodu, release modunda farklı bir kodu çalıştırmasına olanak sağlıyoruz. Yukarıda kırmızı olarak yazılmış “Servisinizin birincil metodunu buraya yazın” kısmına da yazdığımız ilgili servise ait, kendimizin oluşturduğu bir metotu çağırıyoruz. Hepsi bu kadar işte :)

iyi kodlamalar

fobik bilgi kaynağı yayında; fobiksozluk.com/fobisozluk.com

ASP.NET, Projeler, Web Programlama, Yazılım Yorum Yapılmamış »

Ve yeni sözlüğümüz hayırlı uğurlu olsun, sitenin footer’ından aynen alıntı yapıyorum…

fobiksozluk konsept olarak türkçe sözlüklerin babası eksisozluk‘ün bir türevidir (biraz daha yenilikçi olmaya çalışan bir kardeşidir). fobiksozluk.com hazırlanırken kesinlikle internette kucaktan kucağa dolaşan hazır kodlar kullanılmamış, oturulmuş, kasılmış, emek verilmiş ve fobiksozluk.com ASP.NET ve AJAX teknolojileri kullanılarak sıfırdan tasarlanmış ve kodlanmıştır. Sonuç olarak naçizane bu site oluşmuştur.”

Hakkaten baya baya uğraştım yalnız :) Hayırlısı bakalım…

Too many characters in character literal

ASP.NET, Yazılım 8 Yorum Yapılmış »

Maykrofsoft’un saç baş yoldurtan ürünlerinden yalnızca birisi olan Visual Studio .NET (2008 versiyonunda karşılaştım bu problemle, önceden belirtmek istedim) veri bağlama işlemleri sırasında aşağıdaki gibi bir hata alabilirsiniz zaman zaman,

Too many characters in character literal

Şimdi efendim bunun nedenine gelince, bi kere .NET “runat=server” tag’ına sahip herangi bir sunucu kontrolünde istemci taraflı “onlick, onpress” vs. gibi işlemlere izin vermiyor. Misal,

<form id="form1" runat="server" onload="alert('Yukarıdaki hataya neden olur!')" >

Aldığınız hatanın muhtemel nedenlerinin başında bu geliyor olabilir. Tavsiyem sunucu kontrolleri üzerinde bu tarz birşeyler yaptıysanız bunları kaldırıp yerine,

protected void Page_Load(object sender, EventArgs e)
{
         form1.Attributes.Add("onload", "alert('Bu çalışır!!!');");
}

gibi bir yol seçebilirsiniz.

Bu hataya neden olabilicek başka bir neden de veri bağlama işlemleri sırasında sayfanızın HTML kodunda veri bağlama yazım kurallarına dikkat edilmemesi olabilir.  Misal,

<asp:HyperLink ID="titleLink1" runat="server"
Text="<%# Eval('title') %>" ToolTip="<%# Eval('title') %>"></asp:HyperLink>

yazdığınızda, yukarıda bahsi geçen hatadan iki tane alırsınız. Nedeni ise veri bağlanan bölümün dışında çift tırnak, verinin bağlandığı string’lerin ise tek tırnak içerisine alınmış olmasıdır. Aslında bunun tam tersi olması gerekir. Yani, yukarıdaki ifadenin yerine,

<asp:HyperLink ID="titleLink1" runat="server" Text='<%# Eval("title") %>'
ToolTip='<%# Eval("title") %>'></asp:HyperLink>

yazdığınızda sorunun kaybolacağını göreceksiniz. Haydi bakalım….


Tasarım:FoxTheme & Photoshop Brushes | Türkçe Çeviri:denizakin.com
Yazılar RSS Yorumlar RSS Log in