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サービスはネットワークサービスとして実行されています。ローカルシステムも試しましたが、どちらも機能していないようです。何か案は?
ありがとう!