Herman<T>.Instance Ответов: 1

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>

1 Ответов

Рейтинг:
2

Herman&lt;T&gt;.Instance

Вопрос решен. Это было кэширование в браузере...