2013-01-17 51 views
1

我有一个旧的应用程序,很长一段时间后,当我尝试测试它。我得到下面的异常:无法找到请求的.Net Framework数据提供程序。它可能没有安装(Informix的)

Unable to find the requested .Net Framework Data Provider. It may not be installed. 

我的代码:

public DBConnection(string ConnectionString) 
     { 
      this.providerFactory = DbProviderFactories.GetFactory("IBM.Data.Informix");//Exception here 
      this.connection = new IfxConnection(); 
      if (string.IsNullOrEmpty(ConnectionString)) 
      { 
       this.connection.ConnectionString = ConfigurationManager.ConnectionStrings["r_informix"].ToString(); 
      } 
      else 
      { 
       this.connection.ConnectionString = ConfigurationManager.ConnectionStrings["r_informix"].ToString(); 
      } 
      command = this.connection.CreateCommand(); 
     } 

我尝试做以下解决方案here

</runtime> 
<system.data> 
    <DbProviderFactories> 
     <add name="IBM.Data.Informix" 
       invariant="IBM.Data.Informix.Client" 
       description="Informix Data Provider for .NET" 
       type="IBM.Data.Informix, 
        IBM.Data.Informix, 
        Version=3.0.0.2, 
        Culture=Neutral, 
        PublicKeyToken=7c307b91aa13d208" /> 
    </DbProviderFactories> 
    </system.data> 
but In vain ... 
+1

就我而言,它是通过在IIS应用程序池高级设置中将“启用32位应用程序”设置为“true”来解决的。 –

回答

2

根据MSDN documentation for the GetFactory function提供的参数应该与提供程序工厂的不变名称相匹配,该工厂在配置文件中设置为IBM.Data.Informix.Client,但是您正在传递IBM.Data.Informix(不带.Client)。

+0

我这样做了,但同样的问题 –

+1

你提到这是一个旧的应用程序。它曾经在你使用的这台机器上工作过吗?我只是想知道你是如何确定提供者真的被安装的。 – GTG

+0

没有这是一个新的'informix'版本的机器,所以我改变了新的参考,并构建解决方案。但是我在运行应用程序时遇到了这个错误。 –

相关问题