gpt4 book ai didi

c# - Windows 服务中的 ODP.NET 数据库更改通知

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:53 26 4
gpt4 key购买 nike

我用 C# 编写了一个控制台应用程序,它使用 ODP.NET 来监听来自 Oracle 数据库的数据库更改通知。控制台应用程序完美运行。我用相同的代码编写了一个 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 服务作为网络服务运行。我也试过本地系统,但似乎都没有用。有什么想法吗?

谢谢!

最佳答案

该服务需要 Windows 防火墙中的异常(exception)。添加异常后它可以完美运行。

关于c# - Windows 服务中的 ODP.NET 数据库更改通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com