kin*_*005 10 asp.net-mvc ravendb asp.net-mvc-3
我有一个我开发的ASP.Net MVC 3应用程序,它使用RavenDB Embedded作为数据的集成后备存储,我使用本教程作为开始使用RavenDB Embedded创建MVC应用程序的基础.我已经能够在我的开发PC上运行得很好,但是当它在我们运行IIS6的Windows Server 2003 Web服务器上部署时,它会抛出以下错误:
无法访问文件,文件已锁定或正在使用说明:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:Microsoft.Isam.Esent.Interop.EsentFileAccessDeniedException:无法访问文件,文件被锁定或正在使用中
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[EsentFileAccessDeniedException:无法访问文件,文件被锁定或正在使用] C:\ Work\ravendb\SharedLibs\Sources\managedesent-61618\EsentInterop\Api中的Microsoft.Isam.Esent.Interop.Api.Check(Int32错误). cs:2736 Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator)在c:\ Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:207
[InvalidOperationException:无法
在c:\ Builds\RavenDB-Stable\Raven中打开事务存储:C:\ inetpub\wwwroot\MyApp\App_Data\Database\RavenDB\Data] Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator) .Storage.Esent\TransactionalStorage.cs:222 Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration配置)在c:\ Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:185
Raven.Client.Embedded.EmbeddableDocumentStore.InitializeInternal ()在c:\ Builds\RavenDB-Stable\Raven.Client.Embedded\EmbeddableDocumentStore.cs:143中的Raven.Client.Document.DocumentStore.Initialize()在c:\ Builds\RavenDB-Stable\Raven.Client.Lightweight\Document\DocumentStore.cs:496 MyApp.CompositionRoot.CreateControllerFactory()in ...\MyApp\CompositionRoot.cs:36 MyApp.CompositionRoot..ctor()in ..\MyApp\CompositionRoot.cs:17
MyApp.MvcApplication.Application_Start ()in ... MyApp\Global.asax.cs:38[HttpException(0x80004005):无法打开事务存储:C:\ inetpub\wwwroot\MyApp\App_Data\Database\RavenDB\Data]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)+3985477
System.Web.HttpApplication .RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo [] handlers)+191
System.Web.HttpApplication.InitSpecial(HttpApplicationState state,MethodInfo [] handlers,IntPtr appContext,HttpContext context)+325
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext ,HttpContext context)+407
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+375[HttpException(0x80004005):无法打开事务存储:C:\ inetpub\wwwroot\MyApp\App_Data\Database\RavenDB\Data]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+11524352 System.Web.HttpRuntime.EnsureFirstRequestInit( HttpContext context)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+4782309
引用的CompositionRoot.cs类中的错误源是Embeddable Document Store的初始化时.
private static IControllerFactory CreateControllerFactory()
{
var cacheRepository = new EmbeddableDocumentStore();
cacheRepository.ConnectionStringName = "RavenDB";
#if DEBUG
cacheRepository.UseEmbeddedHttpServer = true;
#endif
Raven.Database.Server.NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(8080);
cacheRepository.Initialize(); //Source of Error
var controllerFactory = new TDRControllerFactory(cacheRepository);
return controllerFactory;
}
Run Code Online (Sandbox Code Playgroud)
为什么这只发生在Web服务器而不是我的开发PC上?我不确定具体原因是什么.任何帮助表示赞赏.
kin*_*005 16
这结果是一个权限问题,我给了IIS_IUSRS组修改和写入我的应用程序文件夹的根目录的权限,并赋予它正确初始化数据库所需的权限.根目录中可能有一个特定的文件夹需要修改/写入访问权限(在我的情况下,可能是App_Data文件夹,因为那是我实例化我的RavenDB实例的地方).我将不得不测试,因为我不希望任何用户拥有整个应用程序文件夹的修改/写入权限.
| 归档时间: |
|
| 查看次数: |
3255 次 |
| 最近记录: |