Аутентификация формы с помощью WebAPI истекает через 5 минут

Я создаю веб-проект, в котором я использую аутентификацию форм с использованием файлов cookie, чтобы проверить, является ли пользователь аутентификацией.

Все работает нормально, но когда я размещаю это на виртуальном хостинге, срок действия сеанса истекает через 5 минут бездействия. Я установил тайм-аут в конфигурации на 60 минут.

<authentication mode="Forms">
            <forms name=".auth" protection="All" timeout="60"/>
        </authentication>

Во время входа в систему я создал API с именем login, где я устанавливаю аутентификацию.

FormsAuthentication.SetAuthCookie(".auth", false);

И я проверяю, аутентифицирован ли пользователь в веб-API, и мой API выглядит так.

    [Authorize]
    [RoutePrefix("api/value")]
    public class ValueController : ApiController
    {
        // GET api/value
        [Route("get")]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

    }

Я знаю, что это очень старый/плохой подход к проверке через cookie, но это мое устаревшее приложение, и я не могу изменить структуру аутентификации и использовать Owin.

Кто-нибудь может подсказать, почему он истекает через 5 минут бездействия на виртуальном хостинге? Он работает правильно на моем локальном IIS и не истекает до 60 минут.

Помощь приветствуется.


person Moiz    schedule 18.03.2015    source источник
comment
Пулы приложений имеют время простоя в дополнение к времени ожидания сеанса веб-сайта. По умолчанию это 20 минут. Это не контролируется web.config, и вам нужно изменить его в настройках iis.   -  person rdans    schedule 18.03.2015
comment
но на моем виртуальном хостинге нет возможности выбрать. провайдер не позволяет нам это изменить. (Иди папочка)   -  person Moiz    schedule 18.03.2015
comment
Вероятно, вы не сможете увеличить его тогда. Этот пост, кажется, подтверждает, что тайм-аут простоя godaddy составляет 5 минут: codeproject.com/Questions/868986/ - Вы можете открыть билет в службу поддержки с godaddy, чтобы спросить, в противном случае вы можете либо изменить свой хостинг, либо создать какой-то автоматический веб-реквестер, чтобы поддерживать сайт в рабочем состоянии.   -  person rdans    schedule 18.03.2015
comment
хорошо. я свяжусь с богиней   -  person Moiz    schedule 18.03.2015
comment
@Moiz Я знаю, что это старый пост, но у вас есть какая-то связь с GoDaddy? Тайм-аут простоя на виртуальном хостинге (установленный на 5 минут) убивает мою производительность, поскольку пользователей всего около 8 (быстрый семейный сайт для рождественских подарков), поэтому каждый раз, когда они заходят на сайт, пул приложений перезапускается, и это занимает вечность .   -  person ragerory    schedule 11.11.2015
comment
пожалуйста, просмотрите мой ответ.   -  person Moiz    schedule 12.11.2015


Ответы (1)


Причина в том, что хостинг-провайдер очищает сеанс, и решение состоит в том, чтобы добавить machineKey в web.config.

<system.web>
    <machineKey decryption="AES" decryptionKey="ddE3434J4K3J3KLNDFPSODIFSFLKJW34L3OIUF" validation="HMACSHA256" validationKey="07dfdDUIEJSLDJFKLSJFEIOUR3989F8SDF90DF9D0F9DF9SD0F90SDF09SD0F9DF" />
</system.web>

(Обратите внимание, что это пример ключа. Вы должны сгенерировать ключ и добавить его в свою конфигурацию)

person Moiz    schedule 12.11.2015
comment
Я позвонил godaddy, чтобы узнать, могу ли я получить сгенерированный ими машинный ключ для отдельной проблемы: stackoverflow.com/questions/42319225/. Они говорят, что наши подписки находятся на общем сервере, они не могут предоставить машинный ключ. Нужен частный сервер. - person jmogera; 01.03.2017