Anasayfa » Forum

File Upload ile Y&#...
 
Bildirimler

File Upload ile Yüklediğim Excel'i Okuyamıyorum, C#  

  RSS
Mehmet UGUR
(@mehmetugur)
Üye

Merhaba,

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)

Kaynak kod:

try
{
if (fuExcel.HasFile)
{
string Baglanti = "";
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...");
}
else
{
DosyaKayitYeri = string.Concat(Server.MapPath("~/Excel/Aktarim_" + DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss") + DosyaUzantisi));
fuExcel.SaveAs(DosyaKayitYeri);

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\"";
}

OleDbConnection con = new OleDbConnection(Baglanti);
con.Open();
OleDbDataAdapter adp = new OleDbDataAdapter(" Select * from [Sayfa1$] ", con);
DataTable dtVeriler = new DataTable();
adp.Fill(dtVeriler);

lblMesaj.Text = dtVeriler.Rows[0]["AdiSoyadi"].ToString(); // Tahminime göre kod buraya gelince resimde ki sayfaya düşüyor

}
}
}

Alıntı
Gönderildi : 09/04/2017 21:23
Erkan Kilmen
(@ErkanKilmen)
Üye

Merhaba.

Microsoft.ACE.OLEDB.4.0 provider'ine ait dll mevcut mu ve sürüm localindekiyle tutuyormu? kontrol edebilirmisin?

Kolay gelsin.

CevapAlıntı
Gönderildi : 09/04/2017 23:56
Volkan Alkılıç
(@volkanalkilic)
Üye

Upload işlemleri için Web.config dosyanızdaki ayarları kontrol edin. Örnek olarak aşağıdaki ayarları deneyebilirsiniz;

<httpRuntime maxRequestLength="2000000000" executionTimeout="999999"/>

ve

<security>
    <requestFiltering>
        <requestLimits maxAllowedContentLength="2000000000" />
    </requestFiltering>
</security>
CevapAlıntı
Gönderildi : 10/04/2017 00:20
Mehmet UGUR
(@mehmetugur)
Üye

Herkese öncelikle teşekkür ederim.

Erkan bey;

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.

Volkan bey;

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

CevapAlıntı
Gönderildi : 10/04/2017 01:43
Mehmet UGUR
(@mehmetugur)
Üye

Malesef sorun devam ediyor. Natro yine tatmin edici bir cevap veremedi. 

https://drive.google.com/open?id=0Bx6it7J-GoYPbVhoaFN1QWtiWVU

 

CevapAlıntı
Gönderildi : 13/04/2017 00:01
Volkan Alkılıç
(@volkanalkilic)
Üye

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;

    <customErrors mode="Off"/>

CevapAlıntı
Gönderildi : 13/04/2017 00:25
Mehmet UGUR
(@mehmetugur)
Üye

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

CevapAlıntı
Gönderildi : 13/04/2017 00:38
Erdem SELÇUK
(@eravse)
Saygın Üye Forum Yöneticisi

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.

saygılar

 

CevapAlıntı
Gönderildi : 13/04/2017 00:48
Mehmet UGUR
(@mehmetugur)
Üye

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

 

Service Unavailable


HTTP Error 503. The service is unavailable.

CevapAlıntı
Gönderildi : 13/04/2017 01:22
Enis CIFTCI
(@EnisCIFTCI)
Üye

Merhaba Mehmet Bey,

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.

Saygılarımla

CevapAlıntı
Gönderildi : 13/04/2017 02:20
Erdem SELÇUK
(@eravse)
Saygın Üye Forum Yöneticisi

bu bilgilere ek olarak

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ı 🙂

 

saygılar

 

CevapAlıntı
Gönderildi : 13/04/2017 02:24
Mehmet UGUR
(@mehmetugur)
Üye

Enis bey:

İ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)

Erdem bey:

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. 

CevapAlıntı
Gönderildi : 13/04/2017 02:46
Erdem SELÇUK
(@eravse)
Saygın Üye Forum Yöneticisi

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.

saygılar

 

CevapAlıntı
Gönderildi : 13/04/2017 02:50
Enis CIFTCI
(@EnisCIFTCI)
Üye

Erdem Bey,

ü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.

Saygılarımla

CevapAlıntı
Gönderildi : 13/04/2017 03:19
Mehmet UGUR
(@mehmetugur)
Üye

Herkese ilginisinden dolayı teşekkür ederim. Yüklenen exceli okuma konusunda başka fikirlere de açığım, belirtebilirler

CevapAlıntı
Gönderildi : 13/04/2017 12:00
Enis CIFTCI
(@EnisCIFTCI)
Üye

Mehmet Bey,

"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[0]["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ı:
Snippet

<configuration>
  <system.diagnostics>
    <switches>
      <add name="LogSwitch" value="4"/>
    </switches>
    <trace autoflush="true">
      <listeners>
        <remove name="Default"/>
        <add name="Log"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="C:\xPath\Log.txt"/>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>


Saygılarımla

 

 

CevapAlıntı
Gönderildi : 13/04/2017 23:51
Mehmet UGUR
(@mehmetugur)
Üye

İ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. 

CevapAlıntı
Gönderildi : 14/04/2017 00:22
Enis CIFTCI
(@EnisCIFTCI)
Üye

Tekrar merhaba,

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.

 

Saygılarımla

CevapAlıntı
Gönderildi : 14/04/2017 01:07
Mehmet UGUR
(@mehmetugur)
Üye

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.)

CevapAlıntı
Gönderildi : 14/04/2017 12:09
Paylaş: