5

我正在尝试将 Raven DB 部署到以集成模式运行.Net 4的站点(该站点以前用于托管 ASP.Net MVC 3 站点。

我的配置文件是这样的:

<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>

但是,我得到的例外是:

**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**

我已经联系了我的主机并确认我具有对 App_Data 的读/写访问权限,并且我自己也通过编写一些代码来在那里创建一个文件来确认这一点。

我的主人暗示我的问题可能是由于我的数据存储的双重初始化——不管这意味着什么。

你们中的任何人都可以在这里指出我的解决方案吗?

更新 2011-05-18 我正在使用目前在http://builds.hibernatingrhinos.com/download/2004上可用的 RavenDB-Build-360 。我正在使用http://ravendb.net/documentation/docs-deployment-iis上的安装说明在 IIS 7.5 上运行它。但我没有使用自己的本地 IIS,而是将 /Web-folder 的内容复制到我的主机。这意味着 /bin 文件夹、web.config 和 SilverLight XAP 文件。所以我无法通过任何方式调试我的方式。

我没有注意到第一行(关于 WebDAV 模块),但我会尽快与我的主机核实。
Raven DB 如何依赖于此?

4

2 回答 2

3

我遇到了同样的问题 - 我的解决方案是将默认应用程序池身份从“ApplicationPoolIdentity”删除到管理员帐户(例如我自己用于测试目的)。重新启动网站后,这才起作用。

于 2011-11-15T09:37:27.897 回答
0

我也遇到了这个问题,无法用网上找到的任何解决方案来解决。

我最终进入 IIS,右键单击使用 raven 的 Web 应用程序,编辑权限。

选择安全选项卡,单击网络服务,然后选中完全控制。点击应用,一切又开始工作了。

底线:原来是权限问题。我不确定为什么我的权限被更改,因为这一切都是在几天前工作的。也许是 IIS 补丁?我不知道。无论如何,请确保网络服务对使用 raven 的 Web 应用程序具有权限。我完全控制了网络服务,但您可能会摆脱读/写控制。

于 2011-12-15T19:30:27.497 回答