dll的app.config中的连接字符串

我创建了一个C#dll,它使用app.config文件中的连接字符串连接到数据库。

我在Web应用程序(Visual Studio 2013,Windows 7)中使用它,它也连接到数据库并在web.config文件中有自己的连接字符串。 但是,当Web应用程序使用dll时,dll无法从app.config中找到所需的连接字符串。

我意识到dll正在web.config中寻找连接字符串。 现在,我将连接字符串添加到web.config并且它正常工作。

我的问题是:

这是正确的做法吗? 或者,有一种方法让dll从那里找到它的app.config和加载连接字符串?

实际上你的dll(类库项目)中的app.config文件不会影响最终的主机应用程序(使用dll)。 因此,您始终需要在主机应用程序的配置文件中放置正确的连接设置。 例如,如果在winform或WPF应用程序中使用assembly / dll,则应将相关配置(如连接字符串)放在winform或WPF应用程序的app.config文件中。 如果在ASP.NET Web应用程序中使用了assembly / dll,那么我们应该确保将相关设置放在Web应用程序的web.config文件中。

在引用的DLL的app.config文件中对数据库连接进行硬编码可能不是最好的方法。 在web.config文件中设置数据库连接字符串(或机器范围设置的machine.config)将允许DLL的其他使用者使用不同的连接字符串。 例如,如果您具有不同的开发,质量保证或用户验收环境,并且每个部署的Web应用程序都需要不同的数据库,那么这将非常有用。

但是,如果该方法不符合您的需求,则使用“应用程序设置”可以使用和/或覆盖另一个引用的DLL的默认值。 例如,如果您有一个名为Foo的程序集,并且在其中,您使用了设置属性,那么您将拥有Foo的app.config文件的一部分,其中包含以下内容:

   MyValue    

然后,在Web应用程序中,您可以通过调用Foo.Properties.Settings.MyProperty来使用此属性。 此方法还允许您设置Foo程序集可以使用的值。 在您的web.config文件中,您将包含以下部分…

   

…然后添加Foo.Properties.Settings部分,使用您希望Foo.DLL作为Web应用程序的一部分包含时使用的值进行更新。

此方法允许您设置应用程序在引用的DLL中执行代码时将使用的值。 在您的情况下,您只需要将连接字符串放入应用程序设置中,而不是将其包含在连接字符串部分中。