2

ODP.NETを使用してOracleデータベースからのデータベース変更通知をリッスンするコンソールアプリケーションをC#で作成しました。コンソールアプリケーションは完全に機能します。同じコードでWindowsサービスを作成しましたが、Windowsサービスでは起動しOracleDependency.OnChangeません。

データベース変更通知の登録に使用しているコードは次のとおりです。

string sql = GenerateQuery();
using (OracleConnection conn = new OracleConnection(connectionString))
using (OracleCommand cmd = new OracleCommand(sql, conn))
{
    conn.Open();

    // Register a listener for the database change notification event
    OracleDependency dep = new OracleDependency(cmd);
    dep.OnChange += (sender, args) =>
        {
            // Do stuff..
        };
    cmd.ExecuteNonQuery();
}

テーブルをクエリすることでデータベースに通知を表示できますuser_change_notification_regsが、クライアントがコールバックを受信することはありません。この場合も、コンソールアプリケーションバージョン(同じコード)では、クライアントはコールバックを完全に受信します。

Windowsサービスはネットワークサービスとして実行されています。ローカルシステムも試しましたが、どちらも機能していないようです。何か案は?

ありがとう!

4

1 に答える 1

1

The service needed an exception in Windows Firewall. It worked flawlessly after adding the exception.

于 2012-09-26T22:45:24.753 に答える