我正在处理查询通知。我在数据库中创建了队列,服务和路由。我通过 IP地址访问网络上的数据库,因此我在 Sql Server 中创建了路径。
ALTER ROUTE [NotificationMessagesRoute]
WITH SERVICE_NAME = N'MyNotificationService' ,
ADDRESS = N'TCP://myIPAddress:PortNo' --
在FrontEnd上它已经像这样使用了SqlDependency ..
SqlDependency dependency = new SqlDependency(command), "Service=MyNotificationService;local database=Test", int.MaxValue);
如果我使用本地连接字符串以及 Sql Server 中的路由作为本地,它的工作非常完美,但如果我在我的组织本地网络上访问数据库,则不会在新插入上向我显示通知。
我还使用了 SqlDependency 对象,如下所示,但它在错误下面。
SqlDependency dependency = new SqlDependency(command);
错误:在没有提供选项值的情况下使用SqlDependency时,必须在执行添加到SqlDependency实例的命令之前调用SqlDependency.Start()。
Plz帮助......
答案 0 :(得分:4)
在Startup类中添加启动依赖项
System.Data.SqlClient.SqlDependency.Start(ConnectionString);
答案 1 :(得分:3)
您需要通过运行以下查询为数据库设置ENABLE_BROKER
:
ALTER DATABASE [your_database_name] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
答案 2 :(得分:1)
SqlDependency
仅在本地工作,因为它会继续为您部署目标服务,队列和激活过程。如果要在远程方案中部署,则需要使用更基本的SqlNotificationRequest
。您必须在app中自行部署所需的目标服务。请参阅Using SqlNotificationRequest to Subscribe to Query Notifications。
我希望您明白远程路由在其目的地期望另一个SQL Server实例而不是您的应用程序,并且您必须正确设置端点和对话安全性,请参阅Service Broker Communication Protocols。您的场景不太可能需要远程路由。