Это очень странно.
У меня есть приложение asp.net MVC 1. Под IIS6, без анонного доступа - только встроенная аутентификация Windows - все работает нормально. У меня есть следующее на большинстве моих страниц Foo:
<% using (Html.BeginForm())
{ %>
Show All:
<%= Html.CheckBox("showAll", new { onClick = "$(this).parent('form:first').submit();" })%>
<% } %>
Нажатие на флажок вызывает сообщение, страница перезагружается, все хорошо.
Когда я просматриваю журналы доступа, это то, что я вижу, с одной странностью - библиотека js запрашивается во время первого запроса страницы, но не для каких-либо последующих запросов страницы. Лог выглядит так:
GET / 401
GET / 200
GET /Content/Site.css 304
GET /Scripts/jquery-1.3.2.min.js 401
GET /Scripts/jquery-ui-1.7.2.custom.min.js 401
GET /Scripts/jquery.tablesorter.min.js 401
GET /Scripts/jquery-1.3.2.min.js 304
GET /Scripts/jquery-ui-1.7.2.custom.min.js 304
GET /Scripts/jquery.tablesorter.min.js 304
GET /Content/Images/logo.jpg 401
GET /Content/Images/logo.jpg 304
GET /Foo 401
GET /Foo 200
POST /Foo/Delete 302
GET /Foo/List 200
POST /Foo/List 200
Это соответствует домашней странице, нажмите «Foo», удалите запись, установите флажок (который вызывает 2-й POST).
В IIS7.5 иногда происходит сбой - нажатие на флажок не вызывает обратную передачу, но нет очевидных причин, почему это так.
В IIS7.5 я заметил, что каждый отдельный запрос страницы перезапускает запросы для библиотек js - первый - 401, затем 200 (ОК) или 304 (не измененный), в отличие от приведенный выше фрагмент журнала, где это произошло только во время 1-го запроса.
Есть ли способ устранить 401 запрос? Может ли проблема синхронизации иметь какое-то отношение к игнорируемому клику? Поможет ли увеличение числа одновременных подключений? Есть еще идеи? Я немного растерялся, чтобы объяснить это.