2013-08-27 2 views
1

Я не могу открыть вторую страницу с моего собственного веб-сайта ASP.NET MVC, когда первая страница загружает файл. Первая страница кажется блокирующей второй, и мне придется подождать, пока она закончит загрузку или очистку файлов веб-сайта до того, как вы сможете открыть другую страницу.Не удается открыть страницу при загрузке на мой собственный сайт

HOw для решения этой проблемы?

Благодаря

+0

Думает, что вам нужен файл для скачивания асинхронный. –

+0

Разделяют ли ваши страницы общий ресурс? То есть могут ли ваши контроллеры вызвать какой-то общий ресурс, который может быть заблокирован загрузкой файла? – Anton

+0

Привет, я сомневаюсь в этом из-за совместного использования ресурсов. BEcause первая страница при выполнении загрузки еще не ударила по действию MVC, потому что поток все еще переходит на уровень IIS, поэтому действие MVC еще не вызывает и не приведет к блокировке второй страницы. –

ответ

2

Проблемы, потому, что ASP.NET плохой дизайн сессии, когда вы используете код позади MVC действий, дает сеанс и вызвать действие отправки огромный кусок данных, например, при их загрузке, сеанс будет заблокирован ASP.NET

В случае блокировки сеанса при запросе другого действия MVC, в котором есть сеанс, запрос будет помещен в очередь и не будет обработан до тех пор, пока предыдущее действие MVC, которое блокируется сеанс освобождает его. Это большая ошибка дизайна на ASP.NET, что я недавно узнал

Вот почему многие крупные сайты отключить сеанс ASP.NET по умолчанию с помощью SessionStateAttribute

[SessionState(SessionStateBehaviour.Disabled)] 

И это тоже ошибка с Microsoft, так как атрибут принимается только классом CLASS not Method, так как при этом вам нужно работать, как описано в этом URL-адресе Apply session state behavior per action

Видя это, я действительно волнуюсь, что технология ASP.NET - это правильная технология, которую я выбираю для своего сайта, мои усилия и время обучения в этой технологии будет взорвано из-за всего этого ограничения сделанные Microsoft.

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

Смежные вопросы