在配置文件中为类库指定连接字符串并在ASP.NET Web应用程序中重复使用/修改

在配置文件中为类库指定连接字符串并在ASP.NET Web应用程序中重复使用/修改,asp.net,app-config,configuration-files,class-library,Asp.net,App Config,Configuration Files,Class Library,在ASP.NET Web应用程序中使用时,如何在类库的配置文件中指定连接字符串并在以后进行修改 类库是一个数据访问层,其数据集根据配置文件(Settings.Settings/app.config)中指定的连接字符串连接到数据库 该类库用于web应用程序,其中用户输入数据,并使用类库中公开的DAL类和方法写入数据库 现在,我想将这个应用程序从开发环境迁移到测试环境,然后再迁移到生产环境。我面临的问题是,在迁移到测试之后,测试中的应用程序仍然连接到开发数据库。我已经更改了.dll.config文件

在ASP.NET Web应用程序中使用时,如何在类库的配置文件中指定连接字符串并在以后进行修改

类库是一个数据访问层,其数据集根据配置文件(Settings.Settings/app.config)中指定的连接字符串连接到数据库

该类库用于web应用程序,其中用户输入数据,并使用类库中公开的DAL类和方法写入数据库

现在,我想将这个应用程序从开发环境迁移到测试环境,然后再迁移到生产环境。我面临的问题是,在迁移到测试之后,测试中的应用程序仍然连接到开发数据库。我已经更改了.dll.config文件中提到的连接字符串,但这似乎没有影响


有人能解释一下实现这一目标的正确方法吗?提前感谢您的帮助。干杯。

对于.config文件,名称必须与主执行程序集匹配。例如,我有一个类似于您的情况,我需要一个类库将其设置保存在.dll.config文件中。虽然能够引用它,但实际应用程序将无法读取配置文件,因为它需要.exe.config。将.dll.config重命名为.exe.config修复了该问题

在您的情况下,将连接字符串从.dll.config迁移到web.config应该可以解决您的问题


祝你好运

约书亚部分是对的。。。为了子孙后代,我想对这个答案再补充一点,因为我已经在好几个场合研究过同样的问题。首先,我们必须考虑他们的建筑。基于部署,ASP.NET中的.config文件可能会遇到一些问题

考虑到建筑的影响:

单层(一台服务器): 一个简单的web应用程序可以利用对sites web.config文件的引用来解决您的问题。对于单层应用程序来说,这是一个很好的解决方案。对于作为.exe文件使用的windows应用程序,App.config也可以工作

多层(多台服务器): 这是我第一次跨边界处理.config文件时,事情变得有点棘手的地方。记住配置结构的层次结构,并记住这一点()-在相应的ASP.NET文件夹的根目录下有一个machine.config。它们驻留在每个物理服务器上。这些文件被网站Web.config(或App.config)覆盖,而这些文件又被子文件夹.config文件覆盖。如果有多个.config文件,则可能需要使用其中一种方法来传递要使用的特定.config的文件路径。更重要的是,这些文件可能都有连接信息。ASP.NET的machine.config为框架保存了一些。。。所以你至少应该意识到这是一条“继承”链。其次,一旦部署,对Web.config文件的任何更改都将通知应用程序重新启动。这将导致状态丢失(如果站点上有活动用户,则为坏)。解决方法是保留一个单独的.config文件(例如connections.config),并在Web.config中放置对该文件的引用。这将允许您更改连接信息(例如密码),而无需重新启动应用程序。以下是指向更多信息的链接:。本文列出了在普通服务器/IIS部署的应用程序中需要注意的所有细节。请记住,.config文件主要用于应用程序,而不是库。如果您有多个层,那么您可能正在使用某些通信/消息层(例如WCF)。这将具有/允许其自己的Web.config。您可以将连接字符串保留在那里(并在需要时对其进行加密),但更好的是,将它们放在Web.config引用的第二个文件中以便于管理。最后一点,如果您将要考虑云,CONFIG文件被包装为应用程序部署,实际上,它们在“没有重新启动或重新部署”的条件下消除了它们提供的所有好处。Azure部署将要考虑这篇文章来拯救自己从恶梦的维护:本文的另一个要点是——关于如何根据部署以编程方式选择配置的好例子!如果您想增加在云中或云外部署的灵活性,请务必检查这一点

我希望这些要点能节省你们所有人的时间和头痛。我知道我在处理这些问题时损失了几天的编程时间。。。而且很难在一个地方找到may app没有“实现”其连接对象的所有原因。希望这能把你们从我的命运中拯救出来