0

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

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

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

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

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

4

2 回答 2

2

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

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

祝你好运!

于 2009-01-22T05:28:07.037 回答
0

约书亚是部分正确的......对于后人,我想在这个答案中添加更多内容,因为我曾多次遇到相同的问题。首先,必须考虑他们的架构。基于部署的 ASP.NET 中的 .config 文件可能会遇到几个问题。

考虑到架构的影响:

单层(一台服务器):一个简单的 Web 应用程序可能能够利用对站点 Web.config 文件的引用并解决您的问题。对于单层应用程序来说,这将是一个很好的解决方案。在将 Windows 应用程序用作 .exe 文件的情况下,App.config 也可以工作。

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

我希望这些要点可以节省大家的时间和头痛。我知道我浪费了几天的编程时间来处理这些问题......而且很难在一个地方找到所有可能的应用程序没有“实现”其连接对象的原因。希望这将使你们所有人免于和我一样的命运。

于 2012-11-16T14:04:28.233 回答