Приложение Asp.Net, использующее SQL Server CE 4.0, вызывает совместное использование исключения несколькими клиентами - PullRequest
0 голосов
/ 26 января 2012

У меня есть веб-сайт ASP.Net 4.0, который использует SQL Server CE и EF сначала для своего хранилища данных.Когда 2 или более пользователей находятся на сайте, я периодически получаю следующее исключение примерно каждый 5-й или 6-й раз.

Нарушение обмена файлами.Возможно, файл использует другой процесс.[D: \ directory ... \ file.sdf].

Во всем коде, который я создаю, использую и быстро избавляюсь от DbContext каждый раз, когда это необходимо.Несмотря на то, что это значение по умолчанию, я добавил File Mode = Read Write в строку подключения.

Любые идеи о том, что я могу делать неправильно.

1 Ответ

1 голос
/ 26 января 2012

Я думаю, я выяснил, что случилось. Я нашел ссылку (к сожалению, я не помню, где), где упоминается, что общий хостинг Go Daddy использует балансировщик нагрузки и несколько серверов для обслуживания сайта. Несмотря на то, что файл базы данных отображается на диске, смонтированном с буквой диска, очевидно, он должен находиться на файловом сервере, который используется всеми веб-серверами.

Использование SQL CE несколькими клиентами по сети является неподдерживаемой конфигурацией. Когда я обновил SQL Compact до экземпляра SQL Server, предоставленного Go Daddy, проблема (и другая проблема согласованности данных, о которой я не упомянул выше) исчезла.

Я немного удивлен, что не нашел эту проблему, когда гуглил. Microsoft позиционирует SQL Compact как хороший бэкэнд для небольшого веб-сайта. Если я прав, это кажется существенной ответственностью в этом отношении.

...