none
Asp.net Oracle RRS feed

  • Soru

  • Selamlar,

    Asp.net ile Oracle client 11g bağlantısı yapmak için uğraşıyorum.Bildiğimiz gibi dll olmadan olmuyor."Oracle.data.access.dll " Visual studio'daki add reference ile ekledim.64 bit Oracle data access indirerek içerisindeki asp.net 4x altındaki Oracle.data.access.dll 'ini kullandım.Bağlantıyı başarılı birşekilde tamamlayamadım.Connection string için de bu sitedeki "using odp.net without tnsnames.ora" yı kullandım.Ama bağlantı açılıp açılmadığını kontrol etmek amaçlı debug yaptığım zaman aşağıdaki hata ile karşılaşıyorum

    Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. Geçersiz biçimdeki bir program yüklenmek istendi.
    
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
    
    Exception Details: System.BadImageFormatException: Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies.  
    Source Error: 
    
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Kullandığım sistem Win7 64 bit ,asp.net framework 4.5,oracle Client 11g,IIS8.

    Daha önce Oracle client 11g ile asp.net bağlantısı için uğraşan oldu mu veya önerisi olan?

    23 Aralık 2012 Pazar 00:07

Yanıtlar

  • Aşağıdaki link içerisinde de bu hata ile ilgili bir konu anlatılıyor...

    http://www.hilmiaric.com/tr/?p=178


    burhansuleymanvural@windowslive.com

    24 Aralık 2012 Pazartesi 01:33
  • ODAC içerisindeki tüm dll'leri denedim ama hiçbiri olmadı.En son önerilerinden biri

    C:\Windows\Microsoft.NET\assembly\GAC_32\Oracle.DataAccess\

    altındaki Oracle.data.access.dll 'i kullanmam üzerineydi.Bu dll'i  add reference ile Visual Studio'ya import edince problem çözüldü.
    Yardımlarınız için teşekkürler.

     

    25 Aralık 2012 Salı 18:00

Tüm Yanıtlar

  • Aşağıdaki linkten ODAC 11.2 Release 5 (11.2.0.3.20) with Oracle Developer Tools for Visual Studio Paketini kurup çalışabilirsiniz.

     Includes support for Visual Studio 2012 and .NET 4.5

    http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html


    burhansuleymanvural@windowslive.com


    23 Aralık 2012 Pazar 03:27
  • Öncelikle linkin 64 bit olanı var mı diye baktım Xcopy versiyonu çıktı.Sizin verdiğiniz linktekini indirip kurdum.Indirdiğim dosyadaki ...product\11.2.0\client_6\ASP.NET\bin\4  altındaki Oracle.data.access.dll 'i  add reference ile ekledim. 

    Win7 64 bit kullanıyorum.Visual studio 2012 de Solution üzerine gelip sağ tıklayınca "Configuration manager" kısmına gelip "Any cpu" yerine "x86" , "x64" bit olarak değiştirdim .Hala hata aynı.Database 'e bağlanmayı denemek için kullandığım kod bu şekilde.

    using System;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.Odbc;
    using Oracle.DataAccess.Client;
    using Oracle.DataAccess.Types;
    using System.Data;
    
    namespace OracleDbConnection
    {
        public partial class Home : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
               
                string oradb = "Data Source=(DESCRIPTION="
                  + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=WIN-XX)(PORT=1521)))"
                  + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));"
                  + "User Id=G;Password=G;";
                
    
           OracleConnection conn = new OracleConnection(oradb);
                
                try
                {
    
                    conn.Open();
    
                    OracleCommand cmd = new OracleCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = "select dname from dept where deptno = 10";
                    cmd.CommandType = CommandType.Text;
    
                    OracleDataReader dr = cmd.ExecuteReader();
                    dr.Read();
    
                   
    
                }
                catch (Exception ee)
                {
                    ee.ToString();
    
                    throw;
                }
                   
            
            }
        }
    }

    Hangi kısmı gözden kaçırıyorum?

    • Düzenleyen Dogan_Fred 23 Aralık 2012 Pazar 11:20
    23 Aralık 2012 Pazar 11:18
  • using System;
    using System.Data;
    using System.Data.OracleClient;
    
    class OracleConnect
    {
    static void Main()
    {
    string baglantiSozcugu=@"server=ServerAdi;database=Urunler;uid=kullanici;pwd=sifre123";
    
    OracleConnection orcBaglanti=new OracleConnection(baglantiSozcugu);
    
    try
    {
    orcBaglanti.Open();
    }
    catch(OracleException hata)
    {
    MessageBox.Show(hata.Message.ToString());
    }
    finally
    {
    orcBaglanti.Close();
    }

    using ile System.Data.OracleClient  ekleyin nasıl sql de using System.Data.SqlClient yapıyorsunuz aynısı geri kalan her şey sql ile aynı yalnız başlarına sql yerine Oracle yazıp nesneleri kullanıyorsunuz. SqlCommand yerine OracleCommand vs. gibi...


    burhansuleymanvural@windowslive.com


    23 Aralık 2012 Pazar 11:58
  • Windows form uygulaması olarak tasarlanmış sizinki ben web uygulaması olarak düşünmüştüm yinede connection string'i ve diğer kodları denedim ama hala hata veriyor.. 
    23 Aralık 2012 Pazar 12:08
  • ne hatası veriyor? resim ile görüntülermisiniz.

    burhansuleymanvural@windowslive.com

    23 Aralık 2012 Pazar 12:15
  • referans olarak .NET bölümünden System.Data.OracleClient eklemesini yaptınız mı?

    burhansuleymanvural@windowslive.com


    23 Aralık 2012 Pazar 12:16
  • cs kısmında "using System.Data.OracleClient;" ekleyemiyorum.Belki windows form tarafında eklenebiliyordur.Bende client kurulu olduğu için de connection string 

     string oradb = "Data Source=(DESCRIPTION="
                  + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=WIN-XX)(PORT=1521)))"
                  + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));"
                  + "User Id=G;Password=G;";

    bu şekilde diğer kısımda sizin paylaştığınız connectionstring'i de denedim .Orda

    server=ServerAdi;database=Urunler;

    server ve database kısmına farklı denemeler yaparak denedim.Database ile username aynı olabilir ama serveradi kısmına da orcl denedim hata ilk baştaki gibiydi.Normalda Sql developer açabliyorum orda tnsnames.ora kullandım.Onun içindeki bağlantı şeklimde string oradb=host bilgisi de içeriyordu.

    Hata bu şekilde.


    • Düzenleyen Dogan_Fred 23 Aralık 2012 Pazar 12:45
    23 Aralık 2012 Pazar 12:32
  • visual studio hangi versiyon kullanıyorsunuz?

    burhansuleymanvural@windowslive.com

    23 Aralık 2012 Pazar 14:07
  • Visual studio 2012 Ultimate 32 bit kullanıyorum.32 bit 64 bit ayarlamalarından emin olamadığım için solution altındaki configuration manager kısmında tüm hepsini denemiştim.Ayrıca VS 2010 üzerindede denedim sonuç değişmedi 
    • Düzenleyen Dogan_Fred 23 Aralık 2012 Pazar 18:14
    23 Aralık 2012 Pazar 17:44
  • özür, özür, bu benim kullandığım kod .net 3.5 da yazılmış framework içerisinde bu .dll vardı zaten .net 4 ve üstünde kullanımdan kalkmış. Tekrar oracleyi kurmayı da gözüm hiç kesmiyor.

    burhansuleymanvural@windowslive.com



    23 Aralık 2012 Pazar 22:56
  • Asp.net 4.5 için dll dosyasını ..app\product\11.2.0\client_6\odp.net\bin\4 altındaki "oracle.data.access.dll" i alıyoruz değil mi ?

    ..app\product\11.2.0\client_6\odp.net\bin\2x altında olanı kullanmıyoruz.
    23 Aralık 2012 Pazar 23:09
  • zaten 32-bit Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio kurulumunu yapınca .net sekmesi içinde oracle ye ait sınıflar geliyor. Yalnız kullanılan visual studio sürümü ile kurulan Developer Tools for Visual Studio sürümleri uyuşmuyor olabilir. Ayrıca

    string oradb = "Data Source=(DESCRIPTION="
                  + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=WIN-XX)(PORT=1521)))"
                  + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));"
                  + "User Id=G;Password=G;"; şeklinde kullanım yerine direkt 

    string oradb = "Data Source=//serverAdi;User Id=KullaniciAdi;Password=Sifre;";

    OracleConnection conn = new OracleConnection(oradb); conn.Open(); 

    şeklinde kodları yazdığımızda normalde bağlanması lazım. 

    sizin hata mesajınızda version, culture veya public key token uyuşmazlıkları olabilir diyor, hata satırlarında see whitepaper go.microsoft........ ile belirtilen url'ye bakarsanız orada sorunun çözümü yazar zaten


    burhansuleymanvural@windowslive.com

    23 Aralık 2012 Pazar 23:24
  • string oradb = "Data Source=//serverAdi;User Id=KullaniciAdi;Password=Sifre;";
    Oracle client 11g ile mi kullanıyorsunuz  bu bağlantı kodunu ?Yoksa localde oracle kurulu mu ?
    23 Aralık 2012 Pazar 23:39
  • aşağıdaki link'i inceleyebilir misiniz

    http://esraaktas.wordpress.com/2011/03/07/net-ten-oracle-baglantisi/#comment-27


    burhansuleymanvural@windowslive.com

    23 Aralık 2012 Pazar 23:41
  • Tnsnames.ora ayarlamalarını yaptım ama client olduğum için "pc name" bilgisne sahibim.Ip bilgisi olmadığı için salı günü çalışıp çalışmadığı hakkında bilgi verebilirim.

     İyi çalışmalar.

    24 Aralık 2012 Pazartesi 00:04
  • Aşağıdaki link içerisinde de bu hata ile ilgili bir konu anlatılıyor...

    http://www.hilmiaric.com/tr/?p=178


    burhansuleymanvural@windowslive.com

    24 Aralık 2012 Pazartesi 01:33
  • ODAC içerisindeki tüm dll'leri denedim ama hiçbiri olmadı.En son önerilerinden biri

    C:\Windows\Microsoft.NET\assembly\GAC_32\Oracle.DataAccess\

    altındaki Oracle.data.access.dll 'i kullanmam üzerineydi.Bu dll'i  add reference ile Visual Studio'ya import edince problem çözüldü.
    Yardımlarınız için teşekkürler.

     

    25 Aralık 2012 Salı 18:00