처음 SQL 종속성을 사용하여 작업했지만 몇 가지 예제를 거친 후 필자는 모든 것이 정확하다고 느낍니다. Broker가 Enabled인지 확인했습니다. 나는 나의 질문이 정확하다는 것을 더 확인했다. 나는 어떤 예외도받지 못하고있다! 모두가 모든 것이 작동해야하는 것처럼 보입니다. 그러나 그렇지 않습니다. 예외가 발생하지 않고 문제를 해결하는 방법을 알지 못합니다.SQL 종속성 이벤트가 트리거되지 않음
매우 도움이 될만한 도움이 될 것입니다!
public class NotificationEvent
{
private delegate void RateChangeNotification(DataTable table);
private SqlDependency dependency;
string ConnectionString = @"ConnectionString";
string UserName = Environment.UserName;
public async void StartNotification()
{
SqlDependency.Start(this.ConnectionString, "UserNotificationsQueue");
SqlConnection connection = new SqlConnection(this.ConnectionString);
await connection.OpenAsync();
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = string.Format("SELECT [NotificationID],[UserFrom],[UserTo],[DateTimeSent],[Notification] FROM [dbo].[PersonnellNotifications]", UserName);
command.Notification = null;
this.dependency = new SqlDependency(command, "Service=PostUserNotificationsQueue;", Int32.MaxValue);
dependency.OnChange += new OnChangeEventHandler(this.SqlDependencyOnChange);
await command.ExecuteReaderAsync();
}
private void SqlDependencyOnChange(object sender, SqlNotificationEventArgs eventArgs)
{
if (eventArgs.Info == SqlNotificationInfo.Invalid)
{
Console.WriteLine("The above notification query is not valid.");
}
else
{
Console.WriteLine("Notification Info: " + eventArgs.Info);
Console.WriteLine("Notification source: " + eventArgs.Source);
Console.WriteLine("Notification type: " + eventArgs.Type);
}
}
public void StopNotification()
{
SqlDependency.Stop(this.ConnectionString, "QueueName");
}
}
내가 본 같은 다른 클래스 IniatializeComponent()에서이 초기화하고 : 난 그냥 내 코드와 그 작업 좋은에서 다음 테스트 한
private void InitializeComponent()
{
// Initialize SQL Dependancy
ne.StartNotification();
}
내 친숙 함이 다소 제한,하지만 난 당신이 당신이 실제로 서버에서 무슨 일을하는지보고 SQL 프로파일 러를 연결 한 경우 궁금 해서요 : 참조하십시오. – Amy
의도적으로이 초기화는 Global.asax.Application_Start 또는 Startup.cs가 발생해야합니다. – Programmer
@Programmer 당신은 맞습니다 ... 나는 실제로 몇 분 전에 또 다른 문제를 따라 전환했습니다. 그러나 시작 단계에서도 동일한 결과가 나타났습니다. –