Прежде чем думать о downvoting или сообщать мне «google it», пожалуйста, внимательно прочитайте эту проблему. Это старая/классическая проблема, но старое/классическое решение больше не работает. Вот очень простой сценарий, чтобы воспроизвести в Visual Studio 2013/2015:ASP.NET MVC 5 одновременных запросов помещаются в очередь даже с отключенным сеансом
1) Создание веб-приложения ASP.NET с использованием шаблона MVC:
2) Открытые контроллеры \ HomeController.cs и добавить атрибут контроллер и "Sleep" действия:
[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]
public class HomeController : Controller
{
public ActionResult Sleep(int? time)
{
System.Threading.Thread.Sleep(time ?? 3000);
return Content("OK");
}
public ActionResult Index()
{
...
3) Открыть файл: Views \ Home \ Index.cshtml и добавить/заменить HTML содержания следующим:
<script>
function ReqClick() {
var startTime = Date();
$.ajax("/Home/Sleep")
.success(function() {
var log = $("#log");
var endTime = Date();
log.text(log.text() + "Start: " + startTime.toString() + " === " + endTime.toString());
});
};
</script>
<button type="button" onclick="ReqClick();">
Request
</button>
<div>
<textarea id="log" style="width:640px; height:480px"></textarea>
</div>
4) Запустите его (не имеет значения, если вы используете IIS или IIS Express или Vs Dev Server) - Open Home/Index. Нажмите F12, чтобы открыть инструмент разработчика, откройте вкладку сети. На домашней странице нажмите кнопку «Запрос» дважды быстро. Вы можете видеть, что второй запрос занимает почти 6 секунд:
В режиме отладки в контроллере вы можете увидеть, что сессия является недействительным:
Печенье полностью пустой (идентификатор сеанса ASP.NET отсутствует)
Пожалуйста, дайте мне знать, что мне не хватает?
Добавление настройки ниже web.config не помогает:
<sessionState mode="Off"/> <pages enableSessionState="ReadOnly"/>
Если вы используете что-то например [Fiddler] (http://www.telerik.com/fiddler), чтобы вызвать метод сервера, вы заметите, что запросы поставлены в очередь на клиенте, а не на сервере. Ваш код на стороне сервера разрешает несколько запросов, это браузер, который их ставит в очередь. Попробуйте использовать Composer in Fiddler для создания ваших запросов на тесты. –
Еще одно доказательство этого - если вы задали 'cache: false' для вашего запроса ajax. –
У меня вообще нет задержки. Проблема локальна для вас. Код работает отлично для меня. 3 секунды на запрос для многих запросов. – rism