Мы используем проект веб-сайта ASP.NET с динамической компиляцией и недавно перешли в состояние сеанса, поддерживаемого SQL Server, и начали получать странную ошибку. Я понял, что вызывает это, но я не знаю, как лучше всего решить эту проблему.
Шаги для воспроизведения на локальном хосте (с включенным сеансом sql):
Поместите объект, определенный в AppCode, допустим, это
DanObject
в сеанс.Session["x"] = новый DanObject();
(Сеанс сериализуется в базу данных)
- Измените что-то в коде приложения, чтобы сайт перекомпилировался при следующем запросе.
- Сделайте запрос на любую страницу, которая обращается к сеансу
Ошибка: «Не удалось найти сборку App_SubCode_CS.rmdbqb81, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null».
Происходит то, что каждый раз, когда AppCode компилируется, он входит в сборку со случайным именем. Когда моя сессия сериализуется в первый раз, AppCode называется AppCode_123. Когда я изменил свое приложение, AppCode теперь AppCode_456. Однако сеанс, хранящийся в моей базе данных, имеет объект, определенный в AppCode_123. Когда Session пытается бинарно десериализовать DanObject, он взрывается, потому что не может найти AppCode_123.
Каков самый простой способ исправить это?
*Пожалуйста, не говорите о переходе на веб-приложение — наша кодовая база огромна, и на данный момент это невозможно :)