繁体   English   中英

GAC + Config中的.NET程序集

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM