Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用SqlDependency的情况下从存储过程中使用sqlserver服务代理触发C#方法?_C#_Sql_Asp.net - Fatal编程技术网

如何在不使用SqlDependency的情况下从存储过程中使用sqlserver服务代理触发C#方法?

如何在不使用SqlDependency的情况下从存储过程中使用sqlserver服务代理触发C#方法?,c#,sql,asp.net,C#,Sql,Asp.net,当我将新记录插入表中,并将xml从存储过程插入ServiceBroker队列时,我想调用一个C#方法。我可以使用SqlDependency来执行它,但我不需要它-我想使用存储过程来执行它 您可以使用SqlDependecy查看我的代码。但我需要另一种方法,使用SQLServerServiceBroker(而不是DB到DB)从存储过程调用C#方法 不清楚你有什么问题。有很多资源可以解释ServiceBroker是如何工作的,在回答中解释太多了。在客户端,一旦您设置了队列和对话,您只需要一个RECE

当我将新记录插入表中,并将xml从存储过程插入ServiceBroker队列时,我想调用一个C#方法。我可以使用
SqlDependency
来执行它,但我不需要它-我想使用存储过程来执行它

您可以使用
SqlDependecy
查看我的代码。但我需要另一种方法,使用SQLServerServiceBroker(而不是DB到DB)从存储过程调用C#方法


不清楚你有什么问题。有很多资源可以解释ServiceBroker是如何工作的,在回答中解释太多了。在客户端,一旦您设置了队列和对话,您只需要一个
RECEIVE
语句。SqlDependency只是一个使用ServiceBroker的薄面板。您似乎正在着手重新发明那个特定的轮子。@Damien_不相信者:
SqlDependency
使用ServiceBroker(专注于瞬时连接)的方式确实使它成为一个值得重新发明的轮子。特别是,即使在任何特定时刻都没有应用程序来接收消息,常规的ServiceBroker对话仍然有效
SqlDependency
没有这样做(因为它不是设计用来做这件事的;事实上,它是专门设计用来做相反的事情的)。不清楚您遇到了什么问题。有很多资源可以解释ServiceBroker是如何工作的,在回答中解释太多了。在客户端,一旦您设置了队列和对话,您只需要一个
RECEIVE
语句。SqlDependency只是一个使用ServiceBroker的薄面板。您似乎正在着手重新发明那个特定的轮子。@Damien_不相信者:
SqlDependency
使用ServiceBroker(专注于瞬时连接)的方式确实使它成为一个值得重新发明的轮子。特别是,即使在任何特定时刻都没有应用程序来接收消息,常规的ServiceBroker对话仍然有效
SqlDependency
没有这样做(因为它不是设计来做的;事实上,它是专门设计来做相反的事情的)。
public void Notification()
{
    using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();

        var queryString = "SELECT [ID] FROM [dbo].[Message]";

        using (var oCommand = new SqlCommand(queryString, connection))
        {
            // Starting the listener infrastructure...
            SqlDependency.Stop(connectionString, "queueName");
            SqlDependency.Start(connectionString, "queueName");

            var oDependency = new SqlDependency(oCommand);
            oDependency.OnChange += OnNotificationChange;

            // NOTE: You have to execute the command, or the notification will never fire.
            oCommand.ExecuteReader();
        }
    }
}

private void ChangeNotification(object sender, SqlNotificationEventArgs e)
{
    Console.WriteLine("Notification Info: " + e.Info);
    //Re-register the SqlDependency. 
    //var oDependency = new SqlDependency();
    //oDependency.OnChange -= OnNotificationChange;
    RegisterForNotification();
}