У меня странная проблема и вопрос об использовании класса SqlDependency
в обычном приложении 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
вызывается дважды, а следующее обновление вызывается четыре раза и т. д.
В консольном приложении этот код работает нормально.
Что-то не так с моим кодом?
(с использованием Sql 2012 и asp.net MVC 5.2.3 и сервера разработки VisualStudio IISExpress)
Спасибо