Firebird 嵌入式虚拟主机

Firebird Embedded on web hosting

我在使用 asp.net 网络主机上嵌入的 firebird 时遇到问题。

在本地一切正常,但在网络上我有一个例外

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> FirebirdSql.Data.FirebirdClient.FbException: Can't create directory "C:\ProgramData\firebird\". OS errno is 5 ---> FirebirdSql.Data.Common.IscException: Can't create directory "C:\ProgramData\firebird\". OS errno is 5

我做了什么: - 复制 fbembed.dll 及其在 Bin 文件夹中的依赖关系 - 复制 firebird 配置文件并将根变量更改为绝对 Bin 路径 - 将我的数据库复制到 app_data 文件夹

我也像这样动态构建我的连接字符串

   string p = "metadata=res://*/MyFBEmbedModel.csdl|res://*/MyFBEmbedModel.ssdl|res://*/MyFBEmbedModel.msl;provider=FirebirdSql.Data.FirebirdClient;provider connection string='client library=??fbembed??;initial catalog=|DataDirectory|D2015.gdb;user id=sysdba;password=masterkey;Connection lifetime = 0; Pooling = true; MinPoolSize = 0; MaxPoolSize = 500; Packet Size = 8192; ServerType = 1'";


        string mslinepath = HttpContext.Current.Server.MapPath("Default.aspx");
        mslinepath = Path.GetDirectoryName(mslinepath);
        p = p.Replace("??fbembed??", mslinepath + @"\Bin\fbembed.dll");
        context = new MyFBEntities(p);

非常欢迎任何帮助

参考错误编号 5 被拒绝访问。火鸟写锁 数据库的文件到 C:\ProgramData\firebird 但它不能 创建文件夹(您没有足够的权限)。

要重定向锁定文件,需要设置环境变量 FIREBIRD_LOCK到可以写的位置。

另请参阅此讨论: http://firebird.1100200.n4.nabble.com/FB-Tracker-Created-CORE-3197-Firebird-inet-server-consumes-100-CPU-and-hangs-all-connections-td3013382.html

我还在 Firebird 支持邮件列表上发布了这个答案。