У мене є додаток MVC 4. Коли я роблю запит ajax і час вичерпується на сервер, він видає виняток для клієнта:
Не вдалося завантажити ресурс: сервер відповів зі статусом 500 (Внутрішня помилка сервера)
Так що моє запитання
а) Чому він не кидає 401?
b) Чи буде доречно, якщо я перевіряю код статусу 500, щоб перевірити, чи закінчився сеанс? Чи це буде дійсною умовою?
Відповіді:
0 для відповіді № 1Перш за все, ви можете перевірити цю статтю в msdn про коди статусу: https://msdn.microsoft.com/en-us/library/aa287675(v=vs.71).aspx
a) Не повертає несанкціонований (401) код статусу, тому що його внутрішня помилка сервера - сервер не відповідає, не вдався до авторизації
Помилка HTTP 500 Внутрішня помилка сервера - означає, що на сервері щось пішло не так, що його правильна відповідь, ви можете побачити наступну статтю для цього: http://www.checkupdown.com/status/E500.html
b) Ви можете написати відповідне поводження зневдача авторизації / час сеансу, використовуючи фільтр дій або глобальні обробники, не потрібно перевіряти код статусу 500 і неправильно завершувати цей випадок. Для обробки сесії, чий термін дії закінчився, ви можете переглянути цю статтю: http://forums.asp.net/t/1523066.aspx?Redirect+to+Login+after+Session+is+Expired+in+MVC