Как я останавливаю аутентификацию форм ASP.net / сессия от возобновления в вызове веб-сервиса setInterval ajax?

Я имею контроль, что я записал, что это имеет компонент JavaScript и компонент веб-сервиса. Проблема, которую я имею, состоит в том, что JavaScript установлен сделать:

setInterval(this._checkAlertsHandler, this._messageCheckInterval * 1000);

Это вызывает функцию, которая выполняет вызов веб-сервиса как так:

Alert.SiteAlertService.GetAlerts(this._receivedAlertsHandler, this._errorReceivedAlertsHandler);

Таким образом, это использует веб-сервис методы прокси JavaScript для доступа к веб-сервису. Проблема - то, что наше приложение имеет аутентификацию форм и значение тайм-аута, поэтому если пользователь будет неактивен слишком долго, то это зарегистрирует их.

Мой вызов веб-сервиса, по-видимому, отправляет cookie, который включает сессию и аутентификационный ключ форм к веб-сервису. Веб-сервис asp.net затем автоматически возобновляет сессию И аутентификацию форм. Каждый раз JavaScript поражает веб-сервис, он в основном поддерживает пользователя. Я не хочу это поведение, это должно просто обойти это, так, чтобы даже при том, что этот js поражает веб-сервис для проверки на новые сообщения, если пользователь не сделал обратной передачи на нашем приложении (и эффективно неактивно) оно все еще зарегистрировало их. Этого не происходит :(

То, что я хотел бы произойти, является этим вызовом интервала к веб-сервису, не возобновляет аутентификации (обновление сессии, которое я могу обойти при помощи переменной прикладного уровня с ключом/значением словаря для пользовательского идентификатора сессии, таким образом, я не должен использовать переменные сеансового уровня).

Как я делаю, это / изменяет мой веб-сервис / или управление для работы как способ, которым я хочу это?

9
задан lslow00 23 June 2010 в 14:34
поделиться

1 ответ

Вы можете исключить веб-сервис из аутентификации форм:

<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.

0
ответ дан 4 December 2019 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: