如果您有一个充当ur DAL的类库项目,并且它有一个带连接字符串的App.Config文件,我该如何强制它使用该配置文件?它不断从我的Web应用程序项目中的web.config获取值。
DAL项目使用LinqToSql。当我在我的Web应用程序中实现DataContext对象时,从引用的DAL类库项目中,我可以使用它的app.Config connectionstrings吗?它似乎忽略此文件并尝试从web.Config connectionstrings节点中获取连接字符串。那里没有连接线。
感谢任何帮助。一位同事提到在DAL和嵌入式资源中制作app.Config。这听起来像个好主意吗?
谢谢, 〜在圣地亚哥
答案 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。在那之后你应该很好。