Подтвердить что ты не робот

Веб-методы с HttpContext.Current.User.Identity.IsAuthenticated перестают работать после бездействия на Azure

Я тестирую сервер Azure со страницами, использующими функции Ajax (json)/Webmethod.

Некоторые из этих функций проверяют HttpContext.Current.User.Identity.IsAuthenticated перед запуском кода. К сожалению, если пользователь зарегистрирован и страница не делает полный запрос обратной передачи на сервер, только те функции webmethods, которые проверяют HttpContext.Current.User.Identity.IsAuthenticated, прекращают работать полностью через пару минут без каких-либо ошибок. Они даже не запускают блок кода else (см. Ниже).

Я тестировал эти страницы на локальном сервере, и все работало нормально, как должно, даже после длительного периода бездействия. Ниже приведен пример веб-метода

[WebMethod]
public static string serviceMenu(int IDservice)
{
        StringBuilder SBphotoMenu = new StringBuilder();            
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            // Do stuff
        }
        else
        {
           // Do other stuff
        }

        return SBphotoMenu.ToString();
}

Я вызываю веб-метод следующим образом:

function serviceMenu(IDservice) {
$.ajax({
    type: "POST",
    url: "/UserControls/serviceMenu",
    data: "{ IDservice: " + IDservice }",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        // Do Stuff        
    }
})
}

Это поведение происходит только в том случае, если пользователь вошел в систему. Теперь, если пользователь не зарегистрирован, все функции работают нормально даже на Azure.

Фактически, когда веб-методы перестают работать, и я обновляю страницу, пользователь все еще входит в систему, и веб-методы начинают работать снова, но только пару минут, а затем повторное повторение.

Что пойдет не так?

4b9b3361

Ответ 1

Проблема вызвана переменными сеанса, а не установкой. Фактически состояние сеанса не выполняется для приложений ASP.NET в Azure, используя метод "inProc" по умолчанию. Azure использует другие методы, некоторые из которых являются дорогостоящими: хранение таблиц, SQL Azure или кеширование Windows Azure.