Estoy intentando implementar Raven DB en mi sitio ejecutando .Net 4 en modo integrado (el sitio se utilizó anteriormente para alojar ASP.Net MVC . 3 sitioError FileAccessDenied (JET_errFileAccessDenied, no se puede acceder al archivo, el archivo está bloqueado o en uso)
Mi fichero de configuración es la siguiente:
<appSettings>
<add key="Raven/DataDir" value="~\App_Data"/>
<add key="Raven/AnonymousAccess" value="All"/>
<add key="Raven/Port" value="80"/>
</appSettings>
<system.webServer>
<handlers>
<add name="All" path="*" verb="*"
type="Raven.Web.ForwardToRavenRespondersFactory, Raven.Web"/>
</handlers>
</system.webServer>
Sin embargo, la excepción que se ve es la siguiente:
**Error FileAccessDenied (JET_errFileAccessDenied, Cannot access file, the file is locked or in use)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: Microsoft.Isam.Esent.Interop.EsentErrorException: Error FileAccessDenied (JET_errFileAccessDenied, Cannot access file, the file is locked or in use)
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[EsentErrorException: Error FileAccessDenied (JET_errFileAccessDenied, Cannot access file, the file is locked or in use)]
Microsoft.Isam.Esent.Interop.Api.Fail(Int32 err) in C:\Work\ravendb\SharedLibs\Sources\ManagedEsent-48322\EsentInterop\Api.cs:2279
Microsoft.Isam.Esent.Interop.Api.JetInit(JET_INSTANCE& instance) in C:\Work\ravendb\SharedLibs\Sources\ManagedEsent-48322\EsentInterop\Api.cs:130
Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator) in c:\Builds\raven\Raven.Storage.Esent\TransactionalStorage.cs:169
[InvalidOperationException: Could not open transactional storage: d:\IIS\domainfolder\ravendb\App_Data\Data]
Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator) in c:\Builds\raven\Raven.Storage.Esent\TransactionalStorage.cs:182
Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration configuration) in c:\Builds\raven\Raven.Database\DocumentDatabase.cs:127
Raven.Web.ForwardToRavenRespondersFactory..cctor() in c:\Builds\raven\Raven.Web\ForwardToRavenRespondersFactory.cs:31
[TypeInitializationException: The type initializer for 'Raven.Web.ForwardToRavenRespondersFactory' threw an exception.]
Raven.Web.ForwardToRavenRespondersFactory..ctor() +0
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +98
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +241
System.Activator.CreateInstance(Type type, Boolean nonPublic) +69
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1136
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture) +23
System.Web.HttpRuntime.CreateNonPublicInstance(Type type, Object[] args) +60
System.Web.Configuration.HandlerFactoryCache..ctor(String type) +46
System.Web.HttpApplication.GetFactory(String type) +81
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +223
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184**
he co Conecté mi host y tengo la confirmación de que tengo acceso de lectura/escritura a App_Data y también lo he confirmado escribiendo algún código para crear un archivo allí.
Mi host insinuó que mi problema podría deberse a la inicialización doble de mi almacén de datos, sea lo que sea lo que eso signifique.
¿Alguno de ustedes me puede indicar una solución aquí?
ACTUALIZACIÓN 2011-05-18 estoy usando RavenDB-Build-360 disponibles actualmente en http://builds.hibernatingrhinos.com/download/2004. Estoy usando las instrucciones de instalación en http://ravendb.net/documentation/docs-deployment-iis para ejecutarlo en IIS 7.5. Pero en lugar de usar mi propio IIS local, simplemente estoy copiando el contenido de la carpeta/Web a mi host. Esto significa la carpeta/bin, web.config y el archivo SilverLight XAP. Entonces no puedo depurar mi camino a través de nada.
No he notado la primera línea (sobre el módulo WebDAV) pero consultaré con mi anfitrión lo antes posible.
¿Cómo se apoya Raven DB en esto?
¿El sitio tiene nivel completo de confianza ASP.NET? Creo que Raven necesita plena confianza porque Esent es un código no administrado. – nickvane
Y asegúrese de crear solo 1 instancia de DocumentStore y solo Inicializarla una vez (en global.asax Application_Start) (de ahí "la inicialización doble de mi almacén de datos") – nickvane
Hola nickvane, no he pedido esta información, pero me ' Supongo que funciona en confianza media. ¿El requisito de Raven DB para ejecutarse con plena confianza documentado en cualquier lugar? Además, estoy usando la compilación (actual: 360) con la carpeta web precompilada, por lo que no tengo acceso inmediato a global.asax –