Merhaba
Arkadaşlar sizlere benim çözümü bulmakta zorlandığım bir Web Service publish
ettikten sonra alınan “System.BadImageFormatException: Geçersiz biçimdeki bir
program yüklenmek istendi. (HRESULT özel durum döndürdü: 0x8007000B)” hatasının
nedeni ve basit olan çözümünü göstermek istiyorum.
Bunun
nedenine gelecek olursak; yazdığınız yada kullanmak istediğiniz bir webservice
projesine referans olarak eklenen dll dosyalarından birisi 32-bit te yazılmış
ve sadece 32-bit makinelerde(sunucularda) çalışabileceğinden sizin publish
ettiğiniz sunucu ortamıda 64-bit olduğundan IIS service bu dll i
çalıştıramıyor.
Çok
basit ve yalın bir işlem işlem bu sorunumuza çözüm bulacağız.
1. İlk olarak publish ettiğimiz web
service uygulamamızın hangi uygulama havuzu üzerinde çalıştığını bilmemiz yada
öğrenmemiz lazım, bunun içinse IIS Service Yöneticisi açıkken (yeri gelmişken
ISS Service Yöneticisine çalıştıra inetmgr yazarak ulaşabilirsiniz) uygulamamız
üzerine geldikten sonra ya sağ tıklayıp Uygulamaları Yönet -> Gelişmiş
Seçenekler diyerek yada ekranın size göre sağ tarafındaki menüden Temel Ayarlar veya Gelişmiş Ayarlar seçilerek açılan ekrandan uygulamamızın hangi
havuzda çalıştığını görebiliriz.Aşağıdaki alıntıda görülebileceği
gibi benim uygulamam DefaultAppPool
havuzuna tabi olarak çalışıyor.
2. Daha sonra sol taraftaki menüden Uygulama Havuzları seçilerek tüm
havuzları görebiliriz. Buradan bizim uygulamamızın çalıştığı uygulama havuzunu
bulup tıklayıp sağ taraftan onun Gelişmiş
Ayarlar ını açıyoruz.
3. Gelişmiş Ayarlar altındaki 32-Bit Uygulamaları Etkinleştir seçeneğini TRUE konumuna getirdiğimiz zaman artık web servisimiz 32-bit te çalışan dll leri destekleri duruma gelecektir.