【问题标题】:Configuration madness, I have an app.Config but my object looks to web.Config配置疯狂,我有一个 app.Config 但我的对象看起来是 web.Config
【发布时间】:2010-11-21 03:38:58
【问题描述】:

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

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

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

谢谢, ~ck 在圣地亚哥

【问题讨论】:

  • 你能告诉我们你正在使用的文件夹结构和 DLLs / configs 的位置吗?

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


【解决方案1】:

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

【讨论】:

  • 如果您需要覆盖它,我会将配置设置移至 web.config 或您可以手动管理和部署的 XML 文件。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    我不确定,但请看一下:

    using System.Configuration;
    
    ExeConfigurationFileMap Map = new ExeConfigurationFileMap();
    
    Map.ExeConfigFilename = FileName;
    
    Configuration Conf = ConfigurationManager.OpenMappedExeConfiguration(Map, ConfigurationUserLevel.None);
    
    AppSettingsSection section = (AppSettingsSection)Conf.GetSection("???");
    

    【讨论】:

      【解决方案4】:

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

      DoSomething(connectString, SqlDialect, businessObject)

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

      嗯,*.config 文件就是因为这个原因而存在的——它们不仅是特定于环境的,它们也是特定于应用程序的。这样您的 Web 应用程序就可以对每个方法调用说“大家好,connectString = "..." 和 SqlDialect = "...",除非我另有说明。”

      假设您希望一个应用使用一组凭据登录 SQL,而另一个应用使用另一组凭据(必要时使用不同的权限),以便 DBA 可以跟踪哪个应用正在做什么(如果他/她如此选择)。好吧,*.config 文件可以做到这一点。

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

      【讨论】:

        猜你喜欢
        • 2011-05-04
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-03
        • 2017-12-27
        • 1970-01-01
        相关资源
        最近更新 更多