使用 Windows Azure 上嵌入的 RavenDB 写入日志文件失败

Posted

技术标签:

【中文标题】使用 Windows Azure 上嵌入的 RavenDB 写入日志文件失败【英文标题】:Failure writing to log file with RavenDB Embedded on Windows Azure 【发布时间】:2013-05-21 19:00:09 【问题描述】:

我在 Windows Azure 上运行一个 MVC 网站并使用嵌入式 RavenDB。如果网站是“冷的”(从 Azure 实例卸载),我会在第一次访问网站时收到以下错误消息:

“/”应用程序中的服务器错误。

写入日志文件失败

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详情: Microsoft.Isam.Esent.Interop.EsentLogWriteFailException:失败 写入日志文件

来源错误:

在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

堆栈跟踪:

[EsentLogWriteFailException:写入日志文件失败] Microsoft.Isam.Esent.Interop.Api.Check(Int32 err) +21 Microsoft.Isam.Esent.Interop.Api.JetInit(JET_INSTANCE& 实例) +23 Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator, OrderedPartCollection`1 documentCodecs) +309

[InvalidOperationException:无法打开事务存储: C:\DWASFiles\Sites\reflix\VirtualDirectory0\site\wwwroot\App_Data\Data] Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator, OrderedPartCollection`1 documentCodecs) +443 Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration 配置)+994 Raven.Client.Embedded.EmbeddableDocumentStore.InitializeInternal() +313 Raven.Client.Document.DocumentStore.Initialize() +463 Reflix.MvcApplication.InitializeRavenDB(字符串数据目录,布尔值 rethrowException) +135 Reflix.MvcApplication.Application_Start() +131

[HttpException (0x80004005):无法打开事务存储: C:\DWASFiles\Sites\reflix\VirtualDirectory0\site\wwwroot\App_Data\Data] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication 应用程序)+9859441 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext 上下文、MethodInfo[] 处理程序)+118 System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态, MethodInfo[] 处理程序、IntPtr appContext、HttpContext 上下文)+172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext 上下文)+336 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005):无法打开事务存储: C:\DWASFiles\Sites\reflix\VirtualDirectory0\site\wwwroot\App_Data\Data] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文) +9873784 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+254

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.18033

如果我等一两分钟,网站就会正常运行。很明显,这是一个首次启动的问题。有人知道如何解决这个问题吗?

我的配置:

MVC 4 .NET 4.5 RavenDB 2.0.2360

更新: Azure 团队正在将此视为 Azure 网站可能存在的缺陷。更多更新,我一听到任何消息。

【问题讨论】:

您使用的是 Azure 网站 还是 Azure Web 角色 这个问题加一个,遇到同样的问题! 【参考方案1】:

这已被确认为 Azure 网站中的一个错误,现已推出。我没有任何其他详细信息,但该网站现在可以正常工作(2013 年 8 月 30 日),并且我没有对代码进行结构更改。

【讨论】:

【参考方案2】:

查看事件日志,它会为您提供更多信息。 看起来 某事 阻止了正确写入日志,检查权限,特别是,您可能有 CREATE_FILE 权限,但没有 WRITE 权限

【讨论】:

后续问题:在嵌入式模式下运行时如何查看日志? 我的意思是,我知道有一个 logs 文件夹,但其中唯一的东西是一些二进制 RVN.log 文件和一些 jrs 文件在文本编辑器。我必须将它们复制到本地服务器并复制到logs 文件夹吗?

以上是关于使用 Windows Azure 上嵌入的 RavenDB 写入日志文件失败的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上安装 Azure PowerShell及Azure PowerShell部署虚拟机

使用 Windows Azure 在 Android 上推送通知

Windows 10 上带有 Azure AD 示例的 Flask 应用程序

在 Windows 8 上使用 Microsoft 帐户的 Azure ACS 2.0

Windows主机上运行Azure IoT Edge的推荐方法

azure VPN无法在Windows Server 2012上运行