SQLCE 4 — внутренняя ошибка EF4.1: не удается открыть область общей памяти

Привет, я пытаюсь запустить приложение MVC 3 с встроенным SQLCE 4 и EF4.1.

я использовал методы доступа к данным, как описано в это руководство

Это отлично работает локально (очевидно), но при запуске на моем хостинге я получаю сообщение об ошибке ниже. Это среда общего хостинга.

Проблема в открытом соединении? Разве это не должно обрабатываться единицей рабочего класса, которая возвращает dbcontext как синглтон во всем приложении, как упоминалось в руководстве?

Любые советы о том, что это может быть вызвано, будут оценены

Внутренняя ошибка: не удается открыть область общей памяти.

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

Сведения об исключении: System.Data.SqlServerCe.SqlCeException: Внутренняя ошибка: не удается открыть область общей памяти.

Ошибка источника:

Во время выполнения текущего веб-запроса возникло необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Трассировки стека:

   [SqlCeException (0x80004005): Internal error: Cannot open the shared memory region.]
   System.Data.SqlServerCe.SqlCeConnection.ProcessResults(Int32 hr) +40
   System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent) +2542
   System.Data.SqlServerCe.SqlCeConnection.Open() +113
   System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +67

[EntityException: The underlying provider failed on Open.]
   System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +10975150
   System.Data.EntityClient.EntityConnection.Open() +142
   System.Data.Objects.ObjectContext.EnsureConnection() +97
   System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +66
   System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +47
   System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +220
   System.Linq.Queryable.FirstOrDefault(IQueryable`1 source) +383
   System.Data.Entity.Internal.InternalContext.QueryForModelHash() +349
   System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) +109
   System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context) +373
   System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +64

[DataException: An exception occurred while initializing the database. See the InnerException for details.]
   System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +152
   System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +199
   System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +193
   System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +235
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +38
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +89
   System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +21
   System.Data.Entity.Internal.Linq.InternalSet`1.Find(Object[] keyValues) +37
   Web.Infrastructure.DataAccess.Repository`1.GetByID(Object id) +131
   Web.Controllers.PagesController.Home() +154
   lambda_method(Closure , ControllerBase , Object[] ) +79
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +129
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +784922
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +314
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +784976
   System.Web.Mvc.Controller.ExecuteCore() +159
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +335
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +54
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +453
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371

person Kimpo    schedule 17.10.2011    source источник


Ответы (1)


Эта ошибка указывает на то, что файл базы данных SQL Server Compact находится в общей папке, а не на локальном диске. Это не будет работать.

person ErikEJ    schedule 18.10.2011
comment
SqlserverCE.DLL и Sqlserverce.entity.dll находятся в папке BIN. две папки amd64 и x86 также находятся в папке bin. файл .sdf находится в папке APP_DATA. Я протестировал загрузку приложения на другого хостинг-провайдера, и приложение работает. Так что это должна быть конфигурация сервера. Я не эксперт IIS, так что я должен спросить у своего хоста, где работает приложение, относительно прав и разрешений? Так что я могу сообщить хостинг-провайдеру, где приложение не работает о настройках сервера. - person Kimpo; 19.10.2011
comment
Извините, я не знал, что нажатие Enter опубликует комментарий, поэтому я случайно разместил незаконченный комментарий. я обновил комментарий выше сейчас... - person Kimpo; 19.10.2011
comment
Как я уже сказал: эта ошибка указывает на то, что файл базы данных SQL Server Compact находится в общей папке, а не на локальном диске. Спросите у своего хостинг-провайдера, находится ли ваш веб-сайт на локальном диске или в общей папке. - person ErikEJ; 19.10.2011
comment
Хорошо, спасибо, я отправлю электронное письмо своему хостинг-провайдеру и позже обновлю эту ветку с дополнительной информацией. - person Kimpo; 19.10.2011
comment
Наконец-то я получил ответ от своего хостинг-провайдера, и они сказали, что файлы находятся на общем ресурсе smb, а не локально. Вы не знаете, есть ли возможность решить эту проблему, Эрик? - person Kimpo; 26.10.2011
comment
Перейдите к другому хостеру или попросите его переместить файлы локально (вероятно, этого не произойдет) или перейдите на SQL Server. - person ErikEJ; 27.10.2011