System.Runtime.InteropServices.COMException Error Code 500 ve türevi hata çözümü

Eski programınız düzgün bir şekilde çalışırken bir anda "System.Runtime.InteropServices.COMException Error Code 500 veya türevi" bir hata vermeye mi başladı ?

Tüm uğraşlarınız, araştırmalarınız hatta tüm o kodları baştan aşağı incelemelerinizle bir çözüm bulamadıysanız merak etmeyin, bu sorunun  basit bir çözümü var..



Exception Details: System.Runtime.InteropServices.COMException: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

 Bu hata aslında dotnetten eski dönemlerdeki eski platformlarda yazılmış fakat Framework 2.0 ve üzeri kütüphanelerde çalışan programlarda ortaya çıkabiliyor. (visual basic, asp..vs ile yazılmış programlar\siteler)


Genelde de eğer program sql sorgularını, form postback' lerini geçerken veya Active Server Pages (ASP) nesnelerine erişirken COM bileşenlerini kullanıyorsa bu hata meydana gelebiliyor.

Hatanın kaynağı Microsoft tarafından da kabul edilmiş hatta hotfix i yayınlanmış bir bug aslında. Ve ne ilginçtir -ki Microsoft hotfixi web den paylaşmıyor, bize ulaşın diyor. :) [KB-973746]

Fakat yine de bir çözümünüz var ;

Hatanın sebebi muhtelen sql sorgunuzda yer alan bir değerin tab karakteri\yani boşluk olarak gidiyor olması, veya post edilen datanın boş olmasından kaynaklanıyor. Bu değeri tespit edip karşı tarafa boşluk olarak değil de dolu olarak gitmesini sağlarsanız bu hatayı bir daha almazsınız.

Örneğin : Sql sorgunuz : "UPDATE tablom Set değer = &xyz&" ise muhtemelen xyz değeri boş gidiyor, kontrol etmenizde fayda var.

Bu sorun, form verileri veya sorgu dizesi verisi, yerel koda yönetilen koddan sızdırıldığında oluşur. Bu durumda, veriler bir dize olarak kodlanır. Ayrıca, SEKME\BOŞLUK karakteri farklı girdileri ayırmak için kullanılır. Ancak, veriler bir SEKME\BOŞLUK karakteri içeren giriş değerlerine sahip olduğunda, yeni tanıtılan SEKME\BOŞLUK karakteri şifre çözme işlemi sırasında yerel koddaki verileri bozar. [MS-KB-973746]

Referans
Microsoft KB - 973746

Hiç yorum yok:

© 2011-2015 | EmreCiftci.net. Blogger tarafından desteklenmektedir.