5

統合モードで.Net 4を実行しているサイトに Raven DB をデプロイしようとしています (サイトは以前、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 への読み取り/書き込みアクセス権があることを確認しました。また、そこにファイルを作成するコードを書いて、これを自分で確認しました。

私のホストは、私の問題はデータストアの二重初期化が原因である可能性があることをほのめかしました-それが何を意味するにせよ。

ここで解決策を教えてもらえますか?

UPDATE 2011-05-18現在http://builds.hibernatingrhinos.com/download/2004 で入手可能な RavenDB-Build-360 を使用しています。IIS 7.5 で実行するためにhttp://ravendb.net/documentation/docs-deployment-iisのインストール手順を使用しています。ただし、独自のローカル IIS を使用する代わりに、 /Web-folder の内容を自分のホストにコピーするだけです。これは、/bin-folder、web.config、および SilverLight XAP ファイルを意味します。だから私は自分の道をデバッグすることはできません。

最初の行 (WebDAV モジュールについて) に気づいていませんが、できるだけ早くホストに確認します。
Raven DB はこれにどのように依存していますか?

4

2 に答える 2

3

私はこれとまったく同じ問題を抱えていました-私の解決策は、デフォルトのアプリプールIDを「ApplicationPoolIdentity」から管理者アカウント(テスト目的で私自身など)に削除することでした。Web サイトの再起動後、これは機能しました。

于 2011-11-15T09:37:27.897 に答える
0

私もこの問題に遭遇し、Web で見つかった解決策では解決できませんでした。

最終的にIISに入り、レイヴンを使用するWebアプリを右クリックして、アクセス許可を編集しました。

[セキュリティ] タブを選択し、[ネットワーク サービス] をクリックしてから、[フル コントロール] にチェックを入れました。適用を押すと、すべてが再び機能し始めました。

結論:パーミッションの問題であることが判明しました。これはすべて数日前に機能していたため、アクセス許可が変更された理由はわかりません。おそらくIISパッチ?知らない。いずれにせよ、ネットワーク サービスに、raven を使用する Web アプリに対するアクセス許可があることを確認してください。私は Network Service に完全な制御を与えましたが、読み取り/書き込み制御を回避することができます。

于 2011-12-15T19:30:27.497 に答える