ASP.Net ile Excel işlemleri yapıyorsanız muhtemelen "local" sisteminizde excel ile hata almazsınız. Sebebi o makinada zaten "admin" (%99) yetkileri ile çalışıyor olmanızdır. Hatta bırakın excel diğer güvenlik ile alakalı (yazma/silme vb) işlemlerinde de hata almaz "vay be, kod dediğin böyle yazılır" diyebilirsiniz. Acı gerçekle projenizi sizin olmayan bir makinaya kurduğunuzda, sefil kullanıcı hakları ile sınırlandırdığınız anda karşılaşırsınız.
İtiraf edin, bu senaryo başınıza geldi değil mi? (Benim zamanında epey geldi, ne diyebilir, nasıl yalanlayabilirim ki?, artık mükemmel yazdığım için başıma gelmiyor diyemem lâkin projeleri kurduğumuz sistemlerimizdeki ayarları oturttuğumuz için daha nadir yetki hataları ile karşılaşıyoruz.)
Excel ile yaşanan da aynı bu sebepten kaynaklanıyor. Projenizi çalıştıran kullanıcıların Excel objelerine olan yetkisizliği yani. Düzeltmenin yolu oldukça basit, hatta şu yazıda resimleri ile de mevcut.
Bu konu ile ilgili birden fazla farklı mesaj olabilir onu bilemiyorum ama ana hata mesajı "COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005."
Çözüm üstte referans verdiğim yerde detaylı anlatılıyor, genede kendimize hızlı bir not olarak maddelendirirsek:
- start > run > dcomcnfg (bu Component Services'i açacaktır)
- Gelen sol listede şu dallanmaya kadar açacağız : Component Services > Computers > My Computer > DCOM Config
- Listede MS Excel Application (MS Excel Uygulaması Türkçe olanlarda) maddesini bulup, sağ tık, properties
- Security kısmında "Launch and Activation Permission" kısmında Customize
- Burada "ASPNET" ve "Default Application Pool" kullanıyorsanız "Network Service" kullanıcılarına Local Launch ve Local Activation yetkilerini vereceğiz. Eğer kendinize ait bir IIS Pool'unuz var ise onun kullanıcısına yetki vermeniz gerekecektir. IIS_WPG grubuna vermek de durumu kurtarabilir. (App Pool kullanıcıları o gruptadırlar)
- Bu adımlardan sonra yüksek ihtimal proje çalışacaktır, olaki çalışmazsa start > run > iisreset yapılıp denenebilir.