[英].NET assembly in GAC + Config
我有一个.NET 3.5程序集,一个DAL,它通过Linq2SQL连接到数据库。 我将这个程序集部署在GAC中,因为它可以被多个业务层使用。
问题是:在开发环境中,我有一个与生产环境中不同的连接字符串。 在将程序集部署到prod GAC之前,我需要使用适当的连接字符串重新编译它。
是否有任何方法可以允许将程序集独立于连接字符串部署到GAC,因为该信息是从某些配置读取的?
不管将程序集部署到GAC还是网站的bin文件夹中,使用该程序集的应用程序的配置都将覆盖LinqToSQL类中的连接。
创建数据上下文时,应从配置中传入此连接字符串
DAL是否在某个地方对连接字符串进行了硬编码? 如果是这样,那不是可配置部署的最佳选择。 如果您有权访问DAL代码,则对其进行重构,以使其将连接字符串作为构造其任何子类的参数。 然后,任何使用中的应用程序都可以使用其配置文件中的connectionStrings
部分来存储连接字符串。 这样,您可以随时更改连接字符串。
您应该将连接字符串存储在web / app.config文件中,并在程序集中引用该配置设置。
连接字符串不应进行硬编码,为此, config
文件具有现有的connectionStrings
部分。
如果您需要保护连接字符串,则可以对此部分进行加密 ,但是您不应依赖它在GAC中作为保护,因为使用ILDASM可以轻松地查看程序集中的所有字符串(包括连接字符串) 。
IMO,我认为将环境特定值(例如连接字符串)嵌入到GAC程序集(或与此相关的任何程序集)中是错误的。 而是,GAC中的组件应允许将连接字符串传递给它。
考虑更新您的MACHINE.CONFIG文件以添加您的连接字符串或其他配置部分。 这将继承到所有.NET应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.