【问题标题】:Firebird Embedded on web hostingFirebird 嵌入在虚拟主机上
【发布时间】:2015-09-19 15:32:53
【问题描述】:

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

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

System.Data.Entity.Core.EntityException:底层提供程序在打开时失败。 ---> FirebirdSql.Data.FirebirdClient.FbException:无法创建目录“C:\ProgramData\firebird\”。 OS errno 为 5 ---> FirebirdSql.Data.Common.IscException:无法创建目录“C:\ProgramData\firebird\”。操作系统 errno 为 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);

欢迎任何帮助

【问题讨论】:

  • ps:我正在使用这个数据库进行只读访问,并且实例化第一个实体会导致此异常

标签: asp.net firebird


【解决方案1】:

对于参考错误号 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 支持邮件列表上发布了这个答案。

【讨论】:

  • 感谢 Mark,是否无法更改 firebird 配置文件或类似文件中的 firebird_lock 变量? (未找到该选项)并且由于我在共享虚拟主机中,因此不允许设置环境变量 imo
  • 我不确定是否可以在 IIS 上指定此站点。我不知道是否有其他解决方案,除了要求您的托管公司创建文件夹并使其对所有人都可读/可写(这是共享托管的安全风险),或者他们只需要为您配置它。
猜你喜欢
  • 2020-07-17
  • 2023-03-28
  • 2011-04-26
  • 2020-01-23
  • 2023-04-06
  • 2014-05-22
  • 2019-10-01
  • 2011-10-20
  • 2018-05-16
相关资源
最近更新 更多