【问题标题】:web.config, app.config priority / dependancies and usage on compilationweb.config、app.config 优先级/依赖关系和编译使用
【发布时间】:2015-05-16 03:17:54
【问题描述】:

只是一个简单的问题。我有一个拆分为多个项目的解决方案。在一个项目中,我有数据库交互和我的 EDMX。在这个项目中,我的 app.config 文件包含一些连接字符串。

此项目作为依赖项导入到 Web 项目中。在这一个中,我有我的 Web.config 在哪里定义(或“覆盖”)连接字符串。

我想知道用于配置数据库连接的机制是什么。据我了解,Web.config 优先于 App.config。但我想知道的是,依赖项目中的 App.config 是否在编译时使用?

例如:

项目 A => app.config :

<connectionStrings>
    <add name="A" connectionString="myConnectionStringA"/>
    <add name="B" connectionString="myConnectionStringB"/>
</connectionStrings>

在 Web.config 中也是如此,但带有:

<connectionStrings>
    <add name="A" connectionString="myConnectionStringC"/>
    <add name="B" connectionString="myConnectionStringD"/>
</connectionStrings>

哪一个将用于定义与 EDMX 的连接?一方面,在编译时,逻辑上是 A & B 用于定义它,而 C & D 将在运行时使用。

但我不确定,对我来说,一旦“配置”了 dll,我看不出如何使用 C 和 D 来代替 A 和 B。

有人能给我解释一下吗?

谢谢!

【问题讨论】:

    标签: c# .net entity-framework


    【解决方案1】:

    但我不确定,对我来说,一旦“配置”了 dll,我 不明白怎么用 C 和 D 代替 A 和 B。

    在程序运行时获取配置值,而不是在编译时获取。

    【讨论】:

    • 我会说,配置值是在程序第一次启动时获取的
    【解决方案2】:

    在 Visual Studio 中设计实体时,将使用存储在项目的 app.config 文件中的连接字符串。

    即使您从 Web 项目添加对项目的引用,在 Web 项目的上下文中根本不会使用被引用项目的 app.config。当然,它可以作为向 web.config 添加连接字符串时的蓝图。

    与 web 项目相关的配置文件是 web.config。因此,在运行或发布 Web 项目时,使用的设置是 web.config 中的设置。 它们不会覆盖 app.config 的设置,例如“如果未在 web.config 文件中配置连接字符串,则我使用存储在 app.config 中的那些”。 需要将运行 Web 项目时要使用的连接字符串添加到 web.config 文件中,否则如果使用实体类,则会遇到错误。

    有关配置 ASP.NET Web 应用程序的详细信息,请参阅此link

    【讨论】:

      【解决方案3】:

      运行时使用的配置文件与您启动应用程序的位置相关。如果您启动 projectA,它将是 App.config 文件。

      其实就是在“Debug”或“Release”正确目录下编译生成的文件

      当您运行您的网络项目时,它将是 Web.config 文件。

      dll 没有使用配置文件中的值“配置”,它们是在应用程序开始运行时读取的,这取决于正在运行的应用程序。 这就是为什么如果您更改这些值,它们会在您重新启动应用程序时更改,而无需重新编译项目。

      【讨论】:

        猜你喜欢
        • 2011-03-13
        • 1970-01-01
        • 2014-03-10
        • 2012-07-24
        • 1970-01-01
        • 1970-01-01
        • 2015-12-04
        • 2019-04-27
        • 1970-01-01
        相关资源
        最近更新 更多