21 Kasım 2016 Pazartesi

32-bit Dll dosyasını IIS üzerinde 64-bit Web Servis Sunucusunda Çalıştırmak

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.

Hatanın Ekran Alıntısı aşağıdaki gibidir.
 
   

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.

Hiç yorum yok:

Yorum Gönder