Я имею контроль, что я записал, что это имеет компонент JavaScript и компонент веб-сервиса. Проблема, которую я имею, состоит в том, что JavaScript установлен сделать:
setInterval(this._checkAlertsHandler, this._messageCheckInterval * 1000);
Это вызывает функцию, которая выполняет вызов веб-сервиса как так:
Alert.SiteAlertService.GetAlerts(this._receivedAlertsHandler, this._errorReceivedAlertsHandler);
Таким образом, это использует веб-сервис методы прокси JavaScript для доступа к веб-сервису. Проблема - то, что наше приложение имеет аутентификацию форм и значение тайм-аута, поэтому если пользователь будет неактивен слишком долго, то это зарегистрирует их.
Мой вызов веб-сервиса, по-видимому, отправляет cookie, который включает сессию и аутентификационный ключ форм к веб-сервису. Веб-сервис asp.net затем автоматически возобновляет сессию И аутентификацию форм. Каждый раз JavaScript поражает веб-сервис, он в основном поддерживает пользователя. Я не хочу это поведение, это должно просто обойти это, так, чтобы даже при том, что этот js поражает веб-сервис для проверки на новые сообщения, если пользователь не сделал обратной передачи на нашем приложении (и эффективно неактивно) оно все еще зарегистрировало их. Этого не происходит :(
То, что я хотел бы произойти, является этим вызовом интервала к веб-сервису, не возобновляет аутентификации (обновление сессии, которое я могу обойти при помощи переменной прикладного уровня с ключом/значением словаря для пользовательского идентификатора сессии, таким образом, я не должен использовать переменные сеансового уровня).
Как я делаю, это / изменяет мой веб-сервис / или управление для работы как способ, которым я хочу это?
Вы можете исключить веб-сервис из аутентификации форм:
<location path="yourwebservice.asmx">
<system.web>
<authorization>
<allow users="?"/>
<authorization>
</system.web>
</location>
Но вам, вероятно, нужна информация о пользователе, поэтому вы можете настроить веб-сервис на использование аутентификации форм, но деактивировать SlidingExpiration
:
<location path="yourwebservice.asmx">
<system.web>
<authentication mode="Forms">
<forms slidingExpiration="false"></forms>
</authentication>
</system.web>
</location>
Обязательно проверьте, что произойдет, если срок действия куки формы истек. Возможно, вам придется переопределить и loginurl.