ASP.NET的信任级别导致个别DLl无法运行的问题.
可以看出,根本原因是 Could not load file or assembly 'System.Data.SQLite,可以断定,最后安装的SkinTuner使用的SQLite,查看安装色发现果然有System.Data.SQLite.dll,在网站里也找到了System.Data.SQLite.dll,但却无法加载,为什么呢?搜索ould not load file or assembly 'System.Data.SQLite找到答案,我正好用的godaddy.com的空间,这一错误是godaddy的限制造成的!:
System.Data.SQLite.dll是无法在godaddy的服务器上使用的。原因是godaddy的ASP.NET2.0及以上的IIS使用了“信任级别”的限制:TrustLevel=”Medium”,也就是说,很多第三方的dll将无定法在这个级别下运行。必须把TrustLevel设置为”Full”,才可以使用。但是出于安全考虑godaddy一般不会开发这个信任级别。
为什么TrustLevel=”Medium”,就无法使用System.Data.SQLite.dll,是因为当服务器设置了TrustLevel=”Medium”之后,要求运行的dll必须是“完全托管代码”(pure managed code),并且不能包含任何的 P/Invoke调用或使用任何的原始API(raw API)调用。不幸的是,System.Data.SQLite.dll使用了P/Invoke调用。所以无法跑在TrustLevel=”Medium”级别下。
如果一定要使用SQLite数据库的话,方法是有的:
1、使用ASP.NET1.1(当然这样就没法使用很多东西,包括EF层面上的)
2、使用“托管代码”(managed code)的Sqlite数据库,这里有一个可以使用:http://code.google.com/p/managed-sqlite/