Я недавно выпустил новое приложение ASP .Net. Это приложение использует .Net 4.0 и Entity Framework 4. Это «базовое» приложение CRUD. Я почти исключительно использовал EntityDataSource для доступа к данным.
Пользователи сообщают о «временном зависании» приложения (все они используют IE 8). Если пользователь закрывает свой браузер и запускает резервную копию, приложение в порядке. Это может случиться один или два раза в день, обычно для активных пользователей. (Итак, я склонялся к утечке памяти или к каким-либо другим ограничениям ресурсов.)
Еще совсем недавно я никогда не видел, чтобы это случилось. Он не оставляет ничего в журнале событий на клиентском ПК или сервере. Кроме того, в журналах ошибок IIS или журналах SQL ничего нет.
Некоторое время назад я наконец-то понял, что это произошло. Я переключал все мои EntityDataSources, чтобы использовать один объектный контекст на страницу. Я скачал EF Profiler (который, кажется, отличный продукт) и указал, что я использую несколько контекстов объектов на многих моих страницах, из-за того, что многие из них имеют более одного EntityDataSource. Итак, я все это вычищал и тестировал каждую страницу, когда о чудо ... IE перестал загружать страницы!
Сначала страница начала медленно загружаться (и это была страница, которую я уже изменил, чтобы использовать один объектный контекст, так что, хотя я все еще считаю, что мне нужно реализовать этот шаблон синглтона на всех моих страницах, я думаю, это не преступник! Во всяком случае ..), то в какой-то момент я получил:
Сообщение: Sys.WebForms.PageRequestManagerTimeoutException: истекло время ожидания запроса к серверу.
Тем не менее, ничего в журнале событий. Я также проверил веб-журналы IIS и ничего не вижу, но их довольно сложно читать невооруженным глазом, возможно, мне придется скачать парсер, чтобы убедиться, что там ничего нет.
В любом случае, я решил запустить другое окно и перейти к своему приложению, и, конечно же, это окно работало нормально, никаких проблем. Я вернулся к окнам, которые перестали отвечать, обновил его, подождал ... пошел на домашнюю страницу моего приложения (которая в основном представляет собой просто статический html ... и ничего ...). Затем я открыл новую вкладку в окне, которое в данный момент заморожено, и эта вкладка работает нормально. Итак, я возвращаюсь к окну, которое больше не может загружать страницы из моего приложения, и пробую некоторые другие веб-сайты .... espn.com загружается нормально, msn.com загружается нормально, затем я ввожу URL для домашней страницы моего приложения ( и попробовал некоторые другие страницы в моем приложении) и ничего. IIS даже не регистрирует попытки в своих лог-файлах (как будто IE просто решил больше не «получать» для моего локального хоста!). Наконец, после некоторого ожидания (пока я печатал этот пост) у меня теперь есть это сообщение об ошибке в этом окне:
Internet Explorer не может отобразить веб-страницу. Что вы можете попробовать: Проблема может быть вызвана множеством проблем, в том числе: BLAH BLAH BLAH ...
Итак, я возвращаюсь к этому окну, и оно все еще может нормально просматривать интернет-сайты. Но, еще раз, когда я пытаюсь перейти на любую из страниц в моем приложении, я ничего не получаю (вращая синий кружок во вкладке). Итак, я снова открываю новую вкладку в том же браузере и могу нормально просматривать приложение.
Что мое приложение сделало с этим экземпляром браузера, который больше не позволяет ему загружать какие-либо из его страниц (на самом деле, кажется, что он даже не выполняет GET ни на одной из страниц приложений, поскольку в нем нет ничего нового в журналах IIS ... за исключением случаев, когда я загружаю страницы в этих других вкладках и / или окнах браузера, которые работают нормально, поэтому ведение журнала все еще работает ...)? Я буду всегда в долгу перед человеком, который может помочь мне понять это. Я не уверен, что это принесет много пользы, но я собираюсь оставить это окно браузера в надежде, что кто-то может сказать мне некоторые вещи, чтобы попытаться диагностировать эту проблему. Такое ощущение, что я НАСТОЯЩИМ, чтобы понять это. У меня наконец есть окно, которое плохо себя ведет. Я боюсь закрыть окно или сделать новую сборку в приложении, пока не получу хороший вклад в то, что нужно попробовать ...
Я должен добавить, что когда это случилось со мной, я работал на своем локальном ПК, поэтому я был единственным пользователем и имел только одно окно, открытое для приложения ..
Хотя, я совершенно тупой!