【问题标题】:.NET assembly in GAC + ConfigGAC + Config 中的 .NET 程序集
【发布时间】:2010-03-25 15:15:05
【问题描述】:

我有一个 .NET 3.5 程序集,一个 DAL,它通过 Linq2SQL 连接到数据库。 我在 GAC 中部署了这个程序集,因为它可以被多个业务层使用。

问题是:在开发环境中,我的连接字符串与生产环境中的不同。在将程序集部署到 prod GAC 之前,我需要使用适当的连接字符串重新编译它。

是否有任何方法可以独立于连接字符串将程序集部署到 GAC,即从某些配置中读取的信息?

【问题讨论】:

    标签: .net assemblies gac


    【解决方案1】:

    无论您将程序集部署到 GAC 还是网站的 bin 文件夹中,使用该程序集的应用程序的配置都会覆盖 LinqToSQL 类中的连接。

    您应该在创建数据上下文时从配置中传递此连接字符串

    【讨论】:

    • 当然。一天的金发时刻......将连接字符串添加到“客户端”应用程序的 web.config 中,它按预期工作。谢谢队友
    【解决方案2】:

    DAL 是否在某处硬编码了连接字符串?如果是这样,那不是可配置部署的最佳选择。如果您有权访问 DAL 代码,请对其进行重构,以便在构造其任何子类时将连接字符串作为参数。然后,任何消费应用程序都可以使用其配置文件的connectionStrings 部分来存储连接字符串。这样,您可以随时更改连接字符串。

    【讨论】:

      【解决方案3】:

      应该将连接字符串存储在 web/app.config 文件中,并在程序集中引用该配置设置。

      连接字符串不应该被硬编码,config 文件有一个用于此目的的现有 connectionStrings 部分。

      如果你需要保护你的连接字符串,你可以encrypt this section,但你不应该依赖它在 GAC 中作为保护,因为使用 ILDASM 很容易查看程序集中的所有字符串(包括连接字符串)。

      【讨论】:

        【解决方案4】:

        IMO,我认为将诸如连接字符串之类的环境特定值嵌入 GAC 程序集(或与此相关的任何程序集)是错误的。相反,GAC 中的组件应该允许将连接字符串传递给它。

        【讨论】:

          【解决方案5】:

          考虑更新您的 MACHINE.CONFIG 文件以添加您的连接字符串或其他配置部分。这将继承到所有 .NET 应用程序。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-19
            • 1970-01-01
            • 1970-01-01
            • 2012-12-06
            • 1970-01-01
            相关资源
            最近更新 更多