让ServiceStack示例工作

时间:2012-08-13 06:23:51

标签: c# .net sqlite servicestack

我是ServiceStack的新手。我正在测试MovieREST示例。当我运行项目时,立即窗口显示此错误

"A first chance exception of type 'System.DllNotFoundException' occurred in Mono.Data.Sqlite.DLL"

并且没有加载任何电影列表。因此,只有一个空白的“添加新电影”页面带有一些默认输入,每次我点击添加新电影时,都会抛出DllNotFoundException。

我是否需要安装任何依赖项目才能使其正常工作?我用VS2010,IIS和Vista 32bit运行它(是的......我知道..)。刚刚盲目地安装了Mono和sqlite 32bit,我甚至不确定该项目是否需要它们运行。从代码中,我可以看到它指的是“App_Data / db.sqlite”,而References已经有了sqlite3.dll,我用我下载的32bit替换了dll,但仍然没有运气。

请给我一些关于我失踪的提示?谢谢。

1 个答案:

答案 0 :(得分:3)

Mono.Data.Sqlite.DLL只是一个托管包装器,需要找到非托管sqlite3.dll才能运行(这就是拥有Sqlite本身二进制文件的东西)。

它在/bin目录中查找,在构建时将其部署到那里,您需要将sqlite3.dll复制到项目根/并设置构建操作内容,并将复制操作更改为Copy if newer

理想情况下,您希望为您的体系结构使用正确的sqlite3.dllServiceStack.OrmLite.Sqlite.Mono NuGet包中包含32位/ 64位dll),尽管IIS / .NET可以与32位非托管dll一起使用但会{ {3}}

使用混合模式程序集

虽然Mono.Data.Sqlite.DLL允许您在Mono上运行相同的.NET应用程序,但如果您只想在Windows中运行Sqlite,您还可以使用嵌入在.NET中的非托管本机sqlite库的混合模式程序集。 DLL。 NuGet有两个不同的版本:

删除对现有OrmLite或Sqlite dll的任何引用,因为这两个NuGet包都包含所需的所有Sqlite + OrmLite dll。