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
到可以写的位置。
我还在 Firebird 支持邮件列表上发布了这个答案。
我在使用 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
到可以写的位置。
我还在 Firebird 支持邮件列表上发布了这个答案。