2

現在、 3.5 .NET C# プロジェクトに取り組んでいます。ビルドして実行するときに引数を取る外部プログラムを使用します。外部プログラムは、構造化または非構造化データ ソースのインデックスを作成します。

C# プロジェクトは、一部の外部プログラム メソッドをオーバーライドする単純な .dllです。初期化の部分で、一意の ID を取得するために、 postgreSQL DBへの接続を要求します。

警告: インデクサーと私の DB にはリンクがありません。インデクサーは、.xls ファイルまたは mysql DB を含むフォルダーにインデックスを付けることができます。私のPostgreSQLは、一意のIDを持ってきて重要な情報を保存するためだけにここにいます

私の問題は、32 ビットのインデクサーである DBConnector を外部プログラムとして起動すると、すべてがうまくいくことです。

一方、64 ビットのインデクサーである AlfrescoConnectorを起動すると、postgreSQL データベースを開くことができません。

x86 および x64 タイプのコネクタを配置しましたが、そこから問題が発生したかどうかはわかりません。

私はVisual 2012で作業しています。デバッグは x86 互換プログラムを生成するように設定されています (「任意の CPU」または「x64」に変更しても問題は解決しません)。

私が使用する db オブジェクトは DbClient です。これは、外部プログラム参照に由来するため、インターネット上では見つからない特定のメソッドですが、従来の DbConnector として機能します。

私の DbClient オブジェクトは次のようになります。

  • dbClient = {Sinequa.Common.DbClient}
    • _CurrentTransaction = null
    • ConnectionString = "サーバー=localhost;ポート=5444;ユーザー ID=USERSAMPLE;データベース=DBSAMPLE;パスワード=PWDSAMPLE;"
    • DbCn = null
    • DbCnSubSelect = null
    • DbFactory = null
    • DbIsolationLevel = 未指定
    • DefaultCommandBehavior = SequentialAccess
    • エンジン = Postgres
    • エラー = 0
    • エラーテキスト = null
    • LastRowAffected = 0
    • LOBFetchSize = 0
    • プロバイダ = "Npgsql"
    • RefreshCount = 0
    • 現在のリフレッシュ = 0
    • スキーマ = null

myDbClient.Open()Alfrescoのものを使用するとエラーが発生します

助言がありますか ?詳細が必要ですか? 私は仲間の皆さんと一緒に、この痛ましいエラーを解決する準備ができています!

4

1 に答える 1

2

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 がデータベースを開いて要求されたプロバイダーを取得しようとすると、成功します。

于 2013-10-03T07:56:21.540 に答える