Jquery ASP.NET проблема masterpage signalr
Привет Ребята,
в моем asp.net веб-сайт у меня установлен signalR, и когда исключение записывается в таблицу ошибок моего MS SQL Server, запускается SqlDependency, ошибка принимается из БД, ErrorHub отправляет сообщение во весь контекст.Клиентами.все....
Моя страница показывает пнаэл с сообщением в течение 5 секунд. Пока все хорошо.
Затем я нажимаю на выбор меню. Измените значение по умолчанию на другую страницу aspx (с той же главной страницей). Если в БД установлена ошибка, то SqlDependency работает, ErrorHub отправляет ее в контекст.Клиенты.Все, но панель больше не показывается. Как же так?
Что я уже пробовал:
[HubName("errorHub")] public sealed class ErrorMessages : Hub { private Dependencies.DependencyGenericHandler _dependency; private DateTime _currentTime; private ErrorMessages() { _currentTime = DateTime.Now; _dependency = new Dependencies.DependencyGenericHandler("MVS.SQLDEP_Errors"); _dependency.ClearParameters(); _dependency.AddParameters("@ModifiedByUser", Accounts.AccountControl.CurrentUsername); _dependency.AddParameters("@CurrentDateTime", _currentTime); _dependency.DependencyResult += Dependency_DependencyResult; } public static readonly ErrorMessages Instance = new ErrorMessages(); public void CallDepency() { try { _dependency.DependencyResultTable(); } catch (Exception err) { Logging.Log.AddException(err); } } [HubMethodName("displayErrorMessage")] public void Dependency_DependencyResult(DataTable resultTable) { try { _dependency.DependencyResult -= Dependency_DependencyResult; StringBuilder sb = new StringBuilder(); Parallel.ForEach(resultTable.AsEnumerable(), row => { sb.AppendLine($"{row.Field<string>("Errormessage")}{Environment.NewLine}"); }); var context = GlobalHost.ConnectionManager.GetHubContext<ErrorMessages>(); context.Clients.All.displayErrorMessage(sb.ToString()); _dependency.DependencyResult += Dependency_DependencyResult; } catch (Exception err) { Logging.Log.AddException(err); } } }
Мой jQuery =
<script type="text/javascript"> $(function () { var errorHub = $.connection.errorHub; errorHub.client.displayErrorMessage = function (resultTable) { try { $('#<%=PnlErrors.ClientID %>').show(); $('#<%= LbLError.ClientID %>').text(resultTable); setTimeout(" $('#<%=PnlErrors.ClientID %>').hide();", 5000); } catch (e) { console.log(e); } } }); $.connection.hub.start() .done(function () { console.log('Now connected, connection ID=' + $.connection.hub.id); }) .fail(function () { console.log('Could not Connect!'); }); </script>