Asp.net mvc 4 RavenDB-嵌入的文档存储已被处置或NRE
这个问题是关于在ASP.NETMVC应用程序的生命周期中创建Raven文档存储的单个实例,然后在每个请求中使用新的IDocumentSession为客户端提供服务。我相信我已经遵循了在中介绍的推荐过程,但在部署站点后仍然遇到错误 我的代码如下所示。HepApp类包含文档存储,并由应用程序引用:Asp.net mvc 4 RavenDB-嵌入的文档存储已被处置或NRE,asp.net-mvc-4,ravendb,nullreferenceexception,shared-hosting,objectdisposedexception,Asp.net Mvc 4,Ravendb,Nullreferenceexception,Shared Hosting,Objectdisposedexception,这个问题是关于在ASP.NETMVC应用程序的生命周期中创建Raven文档存储的单个实例,然后在每个请求中使用新的IDocumentSession为客户端提供服务。我相信我已经遵循了在中介绍的推荐过程,但在部署站点后仍然遇到错误 我的代码如下所示。HepApp类包含文档存储,并由应用程序引用: internal class HepApp { internal static readonly Object padlock = new object(); private static
internal class HepApp
{
internal static readonly Object padlock = new object();
private static IDocumentStore _DB;
internal IDocumentStore DB
{
get
{
if (_DB == null)
{
lock (padlock)
{
if (_DB == null)
{
_DB = new EmbeddableDocumentStore().Initialize();
return _DB;
}
}
}
return _DB;
}
}
public IDocumentSession GetSession()
{
return DB.OpenSession();
}
}
我的MVC控制器:
public class HomeController : Controller
{
IDocumentSession RavenSession;
public HomeController()
{
}
protected void Init()
{
RavenSession = MvcApplication.HepApp.GetSession();
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
Init();
}
应用程序类Global.asax绑定到:
public class MvcApplication : System.Web.HttpApplication
{
static readonly Object padlock = new object();
static HepApp _HepApp;
internal static HepApp HepApp
{
get
{
if(_HepApp == null)
{
lock(padlock)
{
if(_HepApp == null)
{
_HepApp = new HepApp();
}
}
}
return _HepApp;
}
}
当应用程序启动时,应该初始化文档存储,并在应用程序生命周期的剩余时间内使用。为每个请求创建一个新的会话对象。至少,这是个想法。相反,OnActionExecuting中会出现空引用错误,尽管我怀疑HomeController.Init方法,但它没有出现在堆栈上,或者EmbeddedBledDocumentStore对象已被释放。令人困惑的是,这些错误只有在应用程序运行一段时间后才会出现,这可能表明这是应用程序池回收问题
编辑:
这些错误各不相同,但似乎都表明数据库存储的实例化存在问题:
[EsentFileAccessDeniedException:无法访问文件,该文件已锁定或正在使用]
[InvalidOperationException:无法写入位置:\192.168.0.100\localuser\x\App\u Data/Raven。请确保您具有此路径的读/写权限。]
System.InvalidOperationException:无法写入位置:\192.168.0.100\localuser\x\App\u Data/Raven。确保您对此路径具有读/写权限。-->Microsoft.Isam.Esent.Interop.EsentFileAccessDeniedException:无法访问文件,该文件已锁定或正在使用
位于Microsoft.Isam.Esent.Interop.Api.CheckInt32 err
位于Microsoft.Isam.Esent.Interop.Api.JetInitJET_实例和实例
在Raven.Storage.Esent.TransactionalStorage.InitializeUUIDGenerator uuidGenerator上,OrderedPartCollection1 documentCodecs
-内部异常堆栈跟踪的结束--
在Raven.Storage.Esent.TransactionalStorage.InitializeUUIDGenerator uuidGenerator上,OrderedPartCollection1 documentCodecs
在Raven.Database.DocumentDatabase..ctorInMemoryRavenConfiguration配置中,TransportState TransportState
在Raven.Client.Embedded.embeddedabledocumentstore.InitializeInternal
在Raven.Client.Document.DocumentStore.Initialize
在e:\projects\HEPlaceHolder\HEPlaceHolder\Logic\HepApp.cs中的HEPlaceHolder.HepApp.get_DB中:第27行
在e:\projects\HEPlaceHolder\HEPlaceHolder\Controllers\HomeController.OnActionExecutionGaActionExecutionContext filterContext中的HEPlaceHolder.Controllers.HomeController.OnActionExecutionGaActionExecutionContext中:第31行
位于System.Web.Mvc.Controller.System.Web.Mvc.IActionFilter.OnActionExecutionGactionExecutionContext filterContext
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.InvokeActionMethodFilterAsynchronouslyRecursiveInt32 filterIndex
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c\uu DisplayClass33.b\uu 31AsyncCallback asyncCallback中,对象asyncState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeActionMethodWithFiltersControllerContext controllerContext,IList1筛选器,ActionDescriptor ActionDescriptor,IDictionary2参数,AsyncCallback回调,对象状态
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass21.b__19;asyncCallback asyncCallback中,对象asyncState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeActionControllerContext controllerContext,字符串actionName,AsyncCallback回调,对象状态
在System.Web.Mvc.Controller.b__1CasyncCallbackAsyncCallback、Object asyncState、ExecuteCorerate innerState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncVoid1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
在System.Web.Mvc.Controller.BeginExecuteCoreAsyncCallback中,对象状态
在System.Web.Mvc.Controller.b__14AsyncCallbackAsyncCallback中,对象callbackState,控制器控制器
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncVoid1.CallBeginDelegateAsyncCallback回调中,对象callbackState
位于System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback
回调,对象状态,Int32超时
位于System.Web.Mvc.Controller.BeginExecuteRequestContext requestContext,AsyncCallback,对象状态
位于System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecuteRequestContext requestContext,AsyncCallback回调,对象状态
在System.Web.Mvc.MvcHandler.b__4AsyncCallbackAsyncCallback、Object asyncState、ProcessRequestState innerState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncVoid1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
位于System.Web.Mvc.MvcHandler.BeginProcessRequestHttpContextBase httpContext,异步回调,对象状态
位于System.Web.Mvc.MvcHandler.BeginProcessRequestHttpContext httpContext,异步回调,对象状态
在System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.BeginProcessRequestHttpContext上下文中,异步回调cb,对象外部数据
在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute
在System.Web.HttpApplication.executesteppexecutionstep步骤中,布尔值&同步完成
[ObjectDisposedException:文档存储区已被释放,无法使用
对象名称:“EmbeddableDocumentStore”。]
Raven.Client.DocumentStoreBase.EnsurentClosed+82
System.Web.Mvc.Async.WrappedAsyncResultBase`1.BeginAsyncCallback回调,对象状态,Int32超时+128
[NullReferenceException:对象引用未设置为对象的实例。]
e:\projects\HEPlaceHolder\HEPlaceHolder\Controllers\HomeController.OnActionExecutingActionExecutingContext过滤器上下文中的HEPlaceHolder.Controllers.HomeController.OnActionExecutingActionExecutingContext过滤器上下文:31
System.Web.Mvc.Controller.System.Web.Mvc.IActionFilter.ONActionExecutionGactionExecutionContext过滤器Context+10
System.InvalidOperationException:无法打开事务存储:\192.168.0.100\localuser\x\App\u Data/Raven\Data-->Microsoft.Isam.Esent.Interop.EsentTempPathInUseException:另一个数据库实例已使用临时路径
位于Microsoft.Isam.Esent.Interop.Api.CheckInt32 err
位于Microsoft.Isam.Esent.Interop.Api.JetInitJET_实例和实例
在Raven.Storage.Esent.TransactionalStorage.InitializeUUIDGenerator uuidGenerator上,OrderedPartCollection1 documentCodecs
-内部异常堆栈跟踪的结束--
在Raven.Storage.Esent.TransactionalStorage.InitializeUUIDGenerator uuidGenerator上,OrderedPartCollection1 documentCodecs
在Raven.Database.DocumentDatabase..ctorInMemoryRavenConfiguration配置中,TransportState TransportState
在Raven.Client.Embedded.embeddedabledocumentstore.InitializeInternal
在Raven.Client.Document.DocumentStore.Initialize
在e:\projects\HEPlaceHolder\HEPlaceHolder\Logic\HepApp.cs中的HEPlaceHolder.HepApp.get_DB中:第27行
在e:\projects\HEPlaceHolder\HEPlaceHolder\Controllers\HomeController.OnActionExecutionGaActionExecutionContext filterContext中的HEPlaceHolder.Controllers.HomeController.OnActionExecutionGaActionExecutionContext中:第31行
位于System.Web.Mvc.Controller.System.Web.Mvc.IActionFilter.OnActionExecutionGactionExecutionContext filterContext
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.InvokeActionMethodFilterAsynchronouslyRecursiveInt32 filterIndex
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c\uu DisplayClass33.b\uu 31AsyncCallback asyncCallback中,对象asyncState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeActionMethodWithFiltersControllerContext controllerContext,IList1筛选器,ActionDescriptor ActionDescriptor,IDictionary2参数,AsyncCallback回调,对象状态
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass21.b__19;asyncCallback asyncCallback中,对象asyncState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeActionControllerContext controllerContext,字符串actionName,AsyncCallback回调,对象状态
在System.Web.Mvc.Controller.b__1CasyncCallbackAsyncCallback、Object asyncState、ExecuteCorerate innerState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncVoid1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
在System.Web.Mvc上。
Controller.BeginExecuteCoreAsyncCallback,对象状态
在System.Web.Mvc.Controller.b__14AsyncCallbackAsyncCallback中,对象callbackState,控制器控制器
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncVoid1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
位于System.Web.Mvc.Controller.BeginExecuteRequestContext requestContext,AsyncCallback,对象状态
位于System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecuteRequestContext requestContext,AsyncCallback回调,对象状态
在System.Web.Mvc.MvcHandler.b__4AsyncCallbackAsyncCallback、Object asyncState、ProcessRequestState innerState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncVoid1.CallBeginDelegateAsyncCallback回调中,对象callbackState
在System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase1.BeginAsyncCallback回调中,对象状态,Int32超时
位于System.Web.Mvc.MvcHandler.BeginProcessRequestHttpContextBase httpContext,异步回调,对象状态
位于System.Web.Mvc.MvcHandler.BeginProcessRequestHttpContext httpContext,异步回调,对象状态
在System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.BeginProcessRequestHttpContext上下文中,异步回调cb,对象外部数据
在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute
在System.Web.HttpApplication.executesteppexecutionstep步骤中,布尔值&同步完成
编辑:
每当bin文件夹更新为调试问题的调整版本时,站点最初将正常运行,可能是因为应用程序已重置 能否提供异常堆栈跟踪?@DavidBoike full stacktraces SO编辑器希望我将跟踪编辑为代码:似乎其他人在共享web主机上遇到相同的问题: