У меня есть это веб-приложение под управлением ASP .NET MVC 1.0 с LINQ 2 SQL
Я замечаю очень странную проблему с исключениями бросания SQL в LINQ 2 (в основном это Заданное недопустимое приведение или последовательность содержит более одного элемента) при определенной загрузке.
Большая проблема в том, что я не говорю о Real Heavy / Professional Stress Testing ... По сути, я делаю, открываю FireFox и Chrome и удерживаю F5 по десять секунд в каждом (я называю этого беднягу стресс-тестирование) - о чудо; веб-приложение генерирует эти исключения случайным образом в течение следующих двух или пяти минут. Если я перезапущу приложение из IIS7 (или перезапущу WebDev, если под Visual Studio), то сразу все вернется в нормальное состояние. Как будто ничего не случилось.
Сначала я подозревал, как я обращаюсь с DataContext, возможно, я должен был использовать его в каждом Application_End из Global.asx, но это ничего не изменило.
Сейчас у меня есть один публичный статический объект DataContext, используемый всеми запросами. Я не уничтожаю это или воссоздаю это. Это правильный способ сделать это? Я должен избавиться от этого? Когда именно я должен избавиться от него?
Есть несколько вещей, которые происходят с каждым запросом - например, на каждой странице объект User (для текущего пользователя) загружается из базы данных, а атрибут «LastSeen» обновляется до DateTime.Now. Другие вещи (например, облако тегов) кэшируются.
Есть идеи, почему это происходит?