Bir süredir Windows 2003 64 bit sürümünü kullanıyorum. Bazı hassasiyetleri olmasa daha da iyi olacak ama sağlamlık ve performansı çok çok iyi. Önceden düşük ramler ile (1-2 gb) kullanırken de iyiydi, şimdi 4 GB ile banamısın demiyor. Tek zorlayan 3 GB veri dosyası boyutu ile Outlook.
Firma olarak geliştirdiğimiz bazı projelerimiz ASP.Net 1.1 üzerinde devam ediyor, ekserisi ise 2.x deler. 1.1 ile devam edenler genelde halen çalışan ve bakım gerektiğinde bakımı yapılan işler.
Bugünlerde bir müşterimizin isteği üzerine eski bir projeyi açmam gerekti ama bir türlü muvaffak olamadım. Hemen her seferinde açmak istediğiniz web projesi ile açtığınız path aynı dizini göstermiyor gibi bir hata veriyordu.
Visual Studio 2003 ile açmayı denedim olmadı Fiddler ile takip ettim vs vs. Şu linkteki arkadaşın yaptıklarına benzer şeyler yaptım (makinayı restart etmedim ama :) . Olmadı en son Google'a sordum, ilk sormamda 2. sıradan el sallayan bu linkte cevabı buldum.
Bu sorunun tanımında "bitness" diye bir ifade geçiyor, bitlerin uyumuna gönderme yapıyorlar, kısaca:
"64 bit Windows'a ait IIS sadece 64 bit dll leri yükleyebiliyor, 32 bit ile çalışan da sadece 32leri. .Net 1.1 dlleri ise 32bit olduğu için 64bit Windows üzerindeki IIS bunları yükleyemiyor ve ortadan ikiye çatlıyormuş." En kısa tanımı bu. Daha detaylar için bkz. Link1 ve link 2
Çözüm oldukça basit, çoğu zaman bize yardım eden adsutil burada da imdadımıza yetişiyor. Komut satırına inin (start>run>cmd) ve
CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
Yazın, hemen karşılık verecek ve Enable32bitAppOnWin64 TRUE yazacaktır.
IIS'i restart edin (start>run>iisreset) ve projenizi yeniden açmayı deneyin.
Bu mudur? Budur...
"CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs SET W3SVC/AppPools/ApplicationPoolAdi/Enable32bitAppOnWin64 1"
ApplicationPoolAdi yazan yere sizin uygulamanizin calistigi app pool adini yazmaniz gerekiyor. Ornegin KendimeNotlarAppPool gibi.
Araştırmadım ama uygulamanızı farklı bir Application Pool'a alıp, sadece o App Pool üstünde Enable32bitAppOnWin64 = 1 olacak şekilde ayar yapmayı deneyebilirsiniz.
Olabilir de olmayabilir de.
Tüm sunucuda 32 bitleri aktif etmenizde ne gibi bir sakınca var ?
Yine de bir sorum olacak:
"CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1"
Bu kod IIS teki bütün projeler için çalışacaktır. Tek bir uygulama için bu sorunu nasıl çözeriz? Bir bilginiz var mı?
Açıklama olarak ekleyecektim ama buradan yazayım halen problem yaşıyorum ama ilk sorun olan Service Unavailable kısmını atlatmış olduk.