我目前正在开发 3.5 .NET C#项目。它使用一个外部程序,在我构建和运行它时接受一个参数。外部程序用于索引结构化或非结构化数据源。
C#项目是一个简单.dll ,它覆盖了一些外部程序方法。在初始化部分,我确实要求连接到我的 postgreSQL DB 以获取唯一ID。
警告:索引器和我的数据库没有链接,索引器可以使用.xls文件或mysql数据库索引文件夹。我的PostgreSQL只是为了带来一个唯一的ID并存储一些重要的信息
我的问题是当我作为外部程序启动 DBConnector这是一个32位索引器时,一切顺利。
当我启动 AlfrescoConnector这是一个64位索引器时,我无法打开我的postgreSQL数据库。
我把x86& x64类型的连接器,但我不知道问题是否来自那里。
我正在开发 Visual 2012 ,我的调试设置为生成x86兼容程序(将其更改为“任何CPU”或“x64”无法解决问题)
我使用的db对象是DbClient,这是一种在Internet上找不到的特定方法,因为它来自外部程序引用,但它可以作为经典的DbConnector。
我的DbClient对象如下所示:
当我与Alfresco一起myDbClient.Open()
有什么建议吗?需要更多细节?我准备好和你的同伴一起解决这个痛苦的错误!
答案 0 :(得分:1)
Alfresco x64位连接器使用.NET配置文件的x64位。配置文件位于:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.conf
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.conf
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.conf
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.conf
请记住,问题是缺少的提供商。因此,要解决此问题,您必须在DbProviderFactories标记之间插入缺少的提供程序,如下所示:
<DbProviderFactories>
<add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Framework Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.13.91, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
下次DbClient尝试打开数据库并获取被询问的提供者时,使用此插入,它将成功。