2016-06-15 2 views
0

У меня есть странная проблема и вопрос об использовании SqlDependency класса в обычном приложении Asp.net MVCSqlDependency и asp.net MVC приложение не полностью функционален

У меня есть стандартный контроллер с кодом:

public ActionResult Index() 
    { 
     RegisterNotification(); 
     return View(); 
    } 

    public void RegisterNotification() 
    { 
     var cs = ConfigurationManager.ConnectionStrings["TestDb"].ConnectionString; 
     var sql = @"Select Data From dbo.TestTable"; 
     using (var conn = new SqlConnection(cs)) 
     { 
      conn.Open(); 
      using (var cmd = new SqlCommand(sql, conn)) 
      { 
       cmd.Notification = null; 
       var sqlDependency = new SqlDependency(cmd); 
       sqlDependency.OnChange += SqlDependency_OnChange; 
       cmd.ExecuteNonQuery(); 
      } 
     } 

    } 

    public void SqlDependency_OnChange(object sender, SqlNotificationEventArgs e) 
    { 
     if (e.Type == SqlNotificationType.Change) 
     { 
      // call some SignalR method here and re-register notification 
      RegisterNotification(); 
     } 
    } 

В Global.asax является SqlDepndency инициализации (на начальных и конечных методов)

Ну, в первом запросе все работает прекрасно, но после некоторого обновления (полный запрос) SqlDependency_OnChange вызова дважды и NEX t refresh call четыре раза и т. д.

В консольном приложении этот код работает нормально.

С кодом нет в коде?

(Использование Sql 2012 и ASP.NET MVC 5.2.3 и Dev сервер VisualStudio IISExpress)

Благодаря

ответ

1

Я думаю, что вы хотите сделать, это создать Singleton, который будет обрабатывать уведомления SqlDependency , Каждый раз, когда кто-то делает запрос, создается новый экземпляр вашего контроллера, который регистрирует новые уведомления. Когда вы получаете несколько уведомлений, я думаю, вы обнаружите, что разные экземпляры вашего контроллера получают уведомление.

Есть отличный пример here

+0

Вы правы !. Спасибо за помощь. Это действительно глупая ошибка. :) – Mennion

Смежные вопросы