【发布时间】:2010-08-08 19:05:00
【问题描述】:
我正在用 ASP.NET MVC 2 构建一个小型 Web 应用程序,使用 db4o 作为数据存储。
我已经添加了一个 HttpModule(根据 the example here)来让应用程序访问 db4o 数据库,并且在我的开发机器上的 VS2008 ASP.NET 开发服务器下一切正常。
但是,当我将应用程序部署到我的网络主机并尝试访问它时,我在 HttpModule 尝试打开数据库文件的那一行得到一个DatabaseFileLockedException。但是应该没有其他东西可以访问该文件;实际上,在应用程序的第一次运行时,它只会在抛出此异常时才被创建。
Web 主机的服务器在 Windows Server 2008 上运行 IIS 7,并且应用程序在完全信任下运行。它是一个子应用程序,以防万一。
我无法弄清楚为什么在实时服务器上发生此错误,但在我的开发服务器本地却没有。谁能帮助我或建议我下一步该怎么做?
【问题讨论】:
-
你会发布你的代码吗?
-
我的 HttpModule 代码与我在问题中链接到的示例完全相同。
-
只是猜测......也许它是数据库文件的路径。您可以尝试指定完整路径而不是相对路径吗?快速浏览一下我们的代码异常处理看起来有点理智,但我不排除抛出错误异常的可能性。我也建议尝试使用您正在使用的路径打开一个 ObjectContainer,什么都不做。
-
谢谢卡尔。我将代码更改为使用绝对路径,但仍然遇到相同的异常。但是,我暂时删除了 HttpModule(在 web.config 中注释掉)并按照您所说的做了,直接从我的控制器
Index中打开一个IObjectContainer操作(具有相同的绝对路径),并且效果很好 - 我可以读取和写入数据没有问题。因此,示例 HttpModule 代码似乎存在问题,尽管我不确定是什么。有什么建议吗?
标签: c# asp.net-mvc db4o