Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 RavenDB-嵌入的文档存储已被处置或NRE_Asp.net Mvc 4_Ravendb_Nullreferenceexception_Shared Hosting_Objectdisposedexception - Fatal编程技术网

Asp.net mvc 4 RavenDB-嵌入的文档存储已被处置或NRE

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

这个问题是关于在ASP.NETMVC应用程序的生命周期中创建Raven文档存储的单个实例,然后在每个请求中使用新的IDocumentSession为客户端提供服务。我相信我已经遵循了在中介绍的推荐过程,但在部署站点后仍然遇到错误

我的代码如下所示。HepApp类包含文档存储,并由应用程序引用:

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主机上遇到相同的问题: