File Upload ile Yüklediğim Excel’i Okuyamıyorum, C# – Yazılım Genel – ÇözümPark Forum
File Upload ile Y&#...
File Upload ile Yüklediğim Excel'i Okuyamıyorum, C#
asp.net web form da son kullanıcıya excel yükletip, onu okutmaya çalışıyorum. Son kullanıcı excel ini file upload ile klasöre kayıt ediyor. fakat kayıt edilen excel belgesi okunamıyor. Sayfa "Bu Siteye Ulaşılamılıyor" a düşüyor. Sizce sorun nereden kaynaklanmaktadır.
(Local de sayfa çalışıyor fakat sunucu firmasının hostuna attığımda resimde ki hatayı veriyor. İlgili klasörün okuma ve yazma yetkisini full olarak verdim. Firma: Natro)
string DosyaKayitYeri = "";
string DosyaUzantisi = Path.GetExtension(fuExcel.PostedFile.FileName);
if (AletCantasi.DosyaKontrol(fuExcel) == false)
lblMesaj.Text = AletCantasi.MesajOlustur_Uyari("UYARI !", "Lütfen Şablonda Belirtilen Formata Uygun Bir 'Excel' Belgesi Yükleyiniz...");
DosyaKayitYeri = string.Concat(Server.MapPath("~/Excel/Aktarim_" + DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss") + DosyaUzantisi));
if (DosyaUzantisi == ".xls")
Baglanti = "Provider=Microsoft.ACE.OLEDB.4.0;Data Source=" + DosyaKayitYeri + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
else if (DosyaUzantisi == ".xlsx")
Baglanti = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DosyaKayitYeri + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
OleDbDataAdapter adp = new OleDbDataAdapter(" Select * from [Sayfa1$] ", con);
DataTable dtVeriler = new DataTable();
lblMesaj.Text = dtVeriler.Rows["AdiSoyadi"].ToString(); // Tahminime göre kod buraya gelince resimde ki sayfaya düşüyor
Gönderildi : 09/04/2017 21:23
Microsoft.ACE.OLEDB.4.0 provider'ine ait dll mevcut mu ve sürüm localindekiyle tutuyormu? kontrol edebilirmisin?
Gönderildi : 09/04/2017 23:56
Upload işlemleri için Web.config dosyanızdaki ayarları kontrol edin. Örnek olarak aşağıdaki ayarları deneyebilirsiniz;
Gönderildi : 10/04/2017 00:20
Herkese öncelikle teşekkür ederim.
Microsoft.ACE.OLEDB.4.0 provider'ine ait dll sunucu firmasında mevcut olduğunu ümit ediyorum. (Daha önceden de Natro da crystal report eklentilerinin eksik olduğunu bildirmem üzerine yükleme yapmışlardı.)
Microsoft.ACE.OLEDB.4.0 provider' ın yüklü olup olmadığını ve yüklü ise sürüm bilgisini öğrenmek için ticket oluşturdum. Cevabı bekliyorum.
Web.config sayfama dediğiniz yerleri ekledim. Fakat yine sorun devam ediyor. Bu sefer de resimde ki hatayı veriyor. Tahiminime göre yine sunucu konfigirasyon kaynaklı bir durum. Pazar sabağından beri açtığım ticket da yazışıp duruyoruz. Sorunu anlamak yerine sunucularda herhangi bir problem görülmemektedir deniip konu kapatılmaya çalışıyorlar. En son sonunda yetkili kişiye iletilmesini talep ettim.
Ticket' a gelen cevabı burdan paylaşırım
Gönderildi : 10/04/2017 01:43
Malesef sorun devam ediyor. Natro yine tatmin edici bir cevap veremedi.
Gönderildi : 13/04/2017 00:01
Bu durumda eğer sunucuya erişiminiz varsa aşağıdaki kontrolleri yapmanızda fayda olacaktır;
IIS teki uygulama havuzunu değiştirmeyi deneyin. Örneğin DefaultAppPool olarak ayarlayın.
Olay görüntüleyiciden IIS olaylarını inceleyin.
Hatanın detaylarını tarayıcıda görmek için Web.Config dosyanıza aşağıdaki ayarı set edin;
Gönderildi : 13/04/2017 00:25
Reseller veya özel sunucu hesabı olmadığı için sunucuya müdahale edemiyorum. (Hesabım hosting hesabı). Şuan off da idi. Büyük bir ihtimalle yüklenen excel de ki verileri okuyamıyacağım
Gönderildi : 13/04/2017 00:38
bu tip durumlarda excel kullanmayın onu pc den upload etmeden once CSV ye cevırıp atın bu txt oldugu ıcın interropt dll lere ihtiyac duymadan halledebılırsınız.
Gönderildi : 13/04/2017 00:48
Dediğiniz doğru hocam, katılıyorum. Şimdi kodu revize ettim. Dediğiniz gibi yüklemeden önce .csv olarak exceli kayıt ettiriyorum fakat yine okumada sıkıntı yaşatıyor. Yine okuma esnasında aşağıda ki hataya düşüyor. Yani sunucu konfigirasyonu ile alakalı bir durum gibi geliyor
Gönderildi : 13/04/2017 01:22
yetkiendirme işlemlerinden sonra sistemi yeniden başlatmak benim için bir çözüm olmuştu. Veya gpupdate.exe /force komutunu yeniden başlatmadan da uygulayabilirsiniz. Dosya işlemlerinde kullandığım yöntem direk "Full Control" değil de; "read", "write" ve "modify" olarak işaretliyorum. Çünkü kendi sistemimde bir takım yetkilendirme ve ayar sorunları yaşadığımdan dolayı. Ayrıca dosya üzerindeki işlem için bir kullanıcı yapısı mı var yoksa bir kullanıcı grubuna bağlı bir kullanıcınız mı var ? Belki bu konuda bir sıkıntı olabilir.
Herhangi bir konfigürasyon için teknik dökümanınız mevcut mu ? Veya kısıtlamalar, kullanıcılar hakkında natro tarafından verilen dökümantasyonda olabilir.
Gönderildi : 13/04/2017 02:20
Mehmet bey natro full trust uygulama calıstırmana ızın vbermez excel dcom kullandıgı ıcın full trust ıhtıyacı duyar yanı bıraz ısın natroda zor gıbı 🙂
Gönderildi : 13/04/2017 02:24
İlk başta ki dedikleriniz doğrudan sunucuya müdahale gerektiren işlemler. Bir önceki mesajımda da belirttiğim gibi hosting hesabı olduğu için bunlara müdahale edemiyorum. Klasöre yetki verme olayına gelince; saten full control deyince otomatik onlarıda seçiyor. Ekstra olarak teker teker işaretlemeye gerek yok. Kullanıcı grubu vs. bahsetmişsiniz bunların yapısını natro dokümantasyon olarak paylaşmıyor. Sorulduğunda da paylaşımlı sunucu yapısı deniliyor. (Açıkçası onlarında bazen ne yaptıklarını bildiklerini sanmıyorum)
Natro artık kurumsal firmalıktan çıktı. 2 yıldır kurumsal hesap kullanıyorum bundan önce de 1 yıl daha kullandım yani yaklaşık 3 yıldır. Natro kullanıcısıym fakat artık müşteriyi adam yerine koymuyorlar ve ticketları artık doğru düzgün okumuyorlar. Hazır kalıp cevap veriyorlar veya artık çok geç geri dönüş yapıyorlar. Bunları müşteri sayılarının artmasına bağlıyorum tabi. 2 ay sonra sözleşmem bitiyor. Bitsin kesinlikle uzatmayacağım, başka firmalarda hesabım var onlara taşıyacağım.
İnternet Bilişim firmasında reseller hesabım var birde onların sunucularında deneyeceğim. Sonucu yine buraya yazarım.
Gönderildi : 13/04/2017 02:46
iş yükleri çok diyelim türkiyede gelişen ve devamlı güncellenen bir sektör bilişim hala yolun yarınsında bile değiliz. Diğer x y z firmalarda aynı isme takılmamak lazım domain sayıları çok fazla kalite hizmet verebilmek için hepsi gerçekten çok çalışıyor.
Gönderildi : 13/04/2017 02:50
ülkemizde bu sektörde yetiştirilebilecek çok sayıda mezun veya istekli arkadaşlarımız var sanıyorum. Belkide yeterli personel olmaması gibi bir seçenekte opsiyonların arasındadır. Umarım yanlış düşünmüyorumdur.
Gönderildi : 13/04/2017 03:19
Herkese ilginisinden dolayı teşekkür ederim. Yüklenen exceli okuma konusunda başka fikirlere de açığım, belirtebilirler
Gönderildi : 13/04/2017 12:00
"Tahminime göre burada.." diye belirterek bir hata tespiti yapmışsınız. Herhangi bir loglama yöntemi veya komponenti kullanıyor musunuz ? En önemli kısım hatanın tam olarak nerede oluştuğu.
Örneğinizde aşağıdaki satırda hata olduğunu düşünüyosunuz. Ancak bir terslik var diye düşünüyorum.
Tahmin ettiğiniz satır : lblMesaj.Text = dtVeriler.Rows["AdiSoyadi"].ToString(); // Tahminime göre kod buraya gelince resimde ki sayfaya düşüyor
Aslında hata vermesi gereken satır : adp.Fill(dtVeriler);
İlk olarak teklifim, kısadan configuration dosyanıza geçici de olsa log yapabilecek satırları ekleyin. Aşağıda örnek olarak kısa kodları verdim. Belki ilginizi çeker.
Siz verileri zaten adapter sınıfı ile çekiyorsunuz, sadece tablonun içerisinden verileri alma esnasında bir tahmininiz var. Yanılıyorsam lütfen düzeltin.
Şu an için aklımdaki iki adımdan birincisi verinin büyüklüğü, ikincisi ise soru olarak; herhangi başka bir dosya altından veri çekmeyi deneyip denemediğiniz ? Yani excel/csv dosyası değil. Örnek bir text dosyası dahi olsa aynı sonucu mu veriyor ?
Kullanım : Trace.WriteLine("log..")
Örnek Configuration yapısı:
<add name="LogSwitch" value="4"/>
Gönderildi : 13/04/2017 23:51
İllaki loglama kullanıyorum (Elmah).
Mesele saten log kaydına düşmede. Yani Kod bloğu file upload ın save folder olayına kadar geliyor. Dosyayı yüklüyor, okuma işlemi olan yerde yani benim ve sizin tahmin ettiiğimiz yere geldiğinde sayfa görüntülenemiyor diyor. Bu yüzden dolayı bağlantıyı kesitği için hatayı da loglayamıyor.
Tecrübelerime dayanarak tahmin ettiğim yerde çatladığından şüphem yok.
Verinin büyüklüğüne değinmişsin. Deneme excel olduğu için ilk hücrede 4 haneli metinsel bir ifade var. txt de denemedim. Çünkü txt de denemek benim için karar merci veya yönlendirme olmayacak. Denemek için denemiş olacağım.
Gönderildi : 14/04/2017 00:22
amacım sadece size yardımcı olmak. Natro kanadından istediğiniz bilgilere ulaşamama veya ticket'larınıza istenilen sürede cevap verilmeme gibi bir sıkıntı var. Böyle bir durumda deneme yanılma yoluyla gitmekten başka bir çare tabii ki yok. Ve bu çareler arasında size yardımcı olmak isterken de işinize karışmak gibi bir niyetimde yok.
Erdem bey'inde belirttiği gibi Natro full trust çalıştırmıyorsa, benimde belirttiğim gibi Authorization kısmında dosya güvenliğinizi Read, Write ve Modification olarak işaretlenmeli ve ardından bir text dosyasının denenmesi bana biraz daha mantıklı bir yöntem gibi geliyor. Tabii ki karar sizin, tabii ki mercii sizsiniz.
1 - Ardından bir FileSystemObject kontrolü için buradaki adrese kesinlikle bakmanızı ve bu örneği hedef dosyanız için uygulamanızı tavsiye ederim.
2 - Ayrıca yine buradaki adreste kopyalama için bir authorization kontrolü yapılmakta. Hedef klasörünüz için deneme yaparak en azından Excel + full control değilde farklı bir kombinasyonla (yukarıda belirttiğim gibi), farklı bir işlem (örneğin kopyalama) yaparak deneyebilirsiniz.
3 - Buradaki örnekte ise hedef klasörünüzü tekrar permission için kontrol etmeniz için güzel bir örnek yer alıyor.
Belirtmek isterim ki, üzerinde çalıştığım sistemler; FullTrust ve FullControl yetkisi kesinlikle olmayan sistemler ve buna yönelik yazılımlar. Belki bahsi geçen yöntem olmayabilir veya olabilir. Ancak emin olmak her zaman olmamaktan da daha iyidir.
Gönderildi : 14/04/2017 01:07
Enis bey, işime karışma gibi kesinlikle değerlendirmiyorum. O konuda rahat olun. Her bireyin düşüncesi farklıdır. Yani aramızda illaki fikir ayrılıkları/farklıları olacaktır.
Sorun tahmin ettiğim gibi tamamiyle Natro hosting firmasından kaynaklanıyormuş. Aynı sistemi İnternet Bilişim hosting firmasına taşıdım. Ve şuan yapmak istediğimi yapıyorum, sorun çözüldü.
(İnternet bilişim firmasına başta Onur bey olmak üzere bütün ekibe ilgisinden dolayı teşekkür ediyorum.)
Gönderildi : 14/04/2017 12:09
Gön: Aytaç ARSLAN, 26 dakika önce
Gön: Ozgur Daghanci, 56 dakika önce