C# 使用32位Oracle服务以64位模式运行

C# 使用32位Oracle服务以64位模式运行,c#,asp.net,oracle,C#,Asp.net,Oracle,这个问题类似于 我解决了这个问题,但当我打开新的项目Wcf服务库时,我也遇到了同样的问题,我以前所做的所有这些更改对我都没有帮助 我尝试了我以前做过的每一件事,甚至更多,但都没有帮助 很重要的一点是,如果我在另一个项目中也这样做,所有的工作都很好,但是在WcfServiceLibrary中它不工作,在WcfServiceApplication中它也工作 我使用VS20124.5 Win7 64,我的Oracle clien 32,但在其他项目中这不是问题 也许是因为我不知道Wcf图书馆项目。 我

这个问题类似于

我解决了这个问题,但当我打开新的项目Wcf服务库时,我也遇到了同样的问题,我以前所做的所有这些更改对我都没有帮助

我尝试了我以前做过的每一件事,甚至更多,但都没有帮助

很重要的一点是,如果我在另一个项目中也这样做,所有的工作都很好,但是在WcfServiceLibrary中它不工作,在WcfServiceApplication中它也工作

我使用VS20124.5 Win7 64,我的Oracle clien 32,但在其他项目中这不是问题

也许是因为我不知道Wcf图书馆项目。 我刚创建了一个从数据库保存数据的服务,在连接到数据库时出错

Error: Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
我的代码

using (OracleConnection con = new OracleConnection())
{
    con.ConnectionString = "User Id=zxc;Password=zxc;Data Source=NXE";
    con.Open();//here i get error
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = con;
    cmd.CommandText = "select * from " + Table;
    int rowsUpdated = cmd.ExecuteNonQuery();
    OracleDataReader reader = cmd.ExecuteReader();
    String DataFromORL = "";
    int row = 0;
    while (reader.Read() && row < 50)
    {
        row++;
        if (reader.HasRows)
        {
            DataFromORL += reader.GetInt32(0);
        }
    }
}
我也有同样的问题。 对我来说,通过执行以下操作,问题得到了解决。 在此之前,请检查您是否同时安装了32位和64位Oracle客户端,以使其在这两种环境中都可用

对我来说,得到这个错误的原因


错误:尝试加载Oracle客户端库引发BadImageFormatException。当以64位模式运行并安装了32位Oracle客户端组件时,会出现此问题

是因为环境变量只有一个安装位置,而它是32位安装位置,这就是错误的原因。在安装了32位Oracle客户端组件并以64位模式运行时,会出现此问题

所以,为了解决这个问题,我添加了64位安装位置,并重新启动了VisualStudio。如果它不起作用,请尝试重新启动系统,我们应该在安装Oracle客户端时指定的Oracle客户端安装位置中添加两个可用的bin目录 在我的系统中,位置如下:

32位C:\app\client\\product\12.1.0\client\u 2\bin
64位C:\app\client\\product\12.1.0\client\u 1\bin

con.Open line上的错误到底是什么?尝试加载Oracle客户端库引发了BadImageFormatException。在安装了32位Oracle客户端组件的情况下以64位模式运行时会出现此问题。请将构建平台目标从任何CPU更改为仅32位,然后查看这是否有帮助不,它没有帮助,