配置疯狂,我有一个app.Config但我的对象看起来像web.Config

时间:2009-08-19 23:39:30

标签: asp.net configuration web-config app-config

如果您有一个充当ur DAL的类库项目,并且它有一个带连接字符串的App.Config文件,我该如何强制它使用该配置文件?它不断从我的Web应用程序项目中的web.config获取值。

DAL项目使用LinqToSql。当我在我的Web应用程序中实现DataContext对象时,从引用的DAL类库项目中,我可以使用它的app.Config connectionstrings吗?它似乎忽略此文件并尝试从web.Config connectionstrings节点中获取连接字符串。那里没有连接线。

感谢任何帮助。一位同事提到在DAL和嵌入式资源中制作app.Config。这听起来像个好主意吗?

谢谢, 〜在圣地亚哥

4 个答案:

答案 0 :(得分:3)

Web应用程序始终使用web.config。桌面应用程序始终使用app.config。

答案 1 :(得分:1)

  

如何强制它使用该配置文件?它不断从我的Web应用程序项目中的web.config获取值。

你做不到。如果您使用System.Configuration类,它们将始终从活动应用程序的.config文件(可执行文件的app.config,asp.net网站的web.config)中提取。

变通方法包括使用文件i / o来读取你的设置(而不是System.Configuration命名空间)或将你的DAL配置信息放在适当的.config文件中(更常见的选择)。 / p>

答案 2 :(得分:0)

我不确定,但请看一下:

using System.Configuration;

ExeConfigurationFileMap Map = new ExeConfigurationFileMap();

Map.ExeConfigFilename = FileName;

Configuration Conf = ConfigurationManager.OpenMappedExeConfiguration(Map, ConfigurationUserLevel.None);

AppSettingsSection section = (AppSettingsSection)Conf.GetSection("???");

答案 3 :(得分:0)

以下是我对* .config文件的看法。假设你的DAL中有一个方法:

DoSomething(connectString,SqlDialect,businessObject)

由于每次调用此方法时connectString和SqlDialect都不会更改,因此能够删除这些参数并通过其他方式获取这些参数会很好。

嗯,* .config文件就是出于这个原因 - 它们不仅是特定于环境的,它们也是特定于应用程序的。对于每个方法调用,你的Web应用程序都可以说“Hey everybody,connectString =”......“和SqlDialect =”...“,直到我说不出来。”

假设您希望一个应用程序使用一组凭据登录SQL,另一个应用程序使用另一组凭据(必要时使用不同的权限),以便DBA可以跟踪哪个应用程序正在执行哪些操作(如果他/她如此选择)。好吧,* .config文件可以实现这一点。

这就是为什么您运行的应用程序是提供* .config文件的应用程序。所以只需从DAL的app.config文件中删除所有内容并将其粘贴到Web.config文件中,然后删除App.config。在那之后你应该很好。