【问题标题】:ASP.NET MVC project web.config and app.config filesASP.NET MVC 项目 web.config 和 app.config 文件
【发布时间】:2020-08-13 01:48:54
【问题描述】:

创建 ASP.NET MVC 项目时,会自动生成一个 web.config 文件,并用于与解决方案相关的所有连接字符串和 dll 版本。

我已将一个新项目添加到使用 Entity Framework 处理数据操作的解决方案中,并且可以看到它也有自己的 app.config 被创建。

以前,所有数据和 Web 都在一个 ASP.NET 项目上,现在我将它们分成两个不同的项目,这样我就可以让 Web 项目只有 Web 组件,而数据项目使用 Entity Framework 进行数据库连接。

最初看起来数据项目的app.config 也需要到数据库的连接字符串,但看起来数据项目可以使用来自web.config 的连接字符串很好地连接到数据库文件。

我已经尝试从数据项目中完全删除 app.config 文件,看起来即使没有它,解决方案也能运行。

app.config 文件存在于 ASP.NET MVC 项目中是否有任何特殊原因,或者是否可以安全删除此文件而不影响网站?

例如,我尝试输入 2 个不同的连接字符串,一个在 web.config 中,另一个在 app.config 中。访问该站点时,似乎只使用了 web.config 文件中的连接字符串和应用程序变量。

app.config 详细信息将覆盖web.config 详细信息的情况下,是否存在某种层次结构?

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    .Net中只有三种类型的项目:windows应用程序、控制台应用程序和类库。

    app.config 将与前两种类型的应用程序一起自动生成,并在应用程序运行时使用;

    对于网站/应用程序/服务,web.config 将在访问网页时生成和使用。但实际上,网站/应用程序/服务是类库类型。

    在您的情况下,Data 项目可能被创建为控制台/Windows 应用程序,因此将生成 app.config。所以应该把Data项目改成类库,在Web项目中添加项目引用,就可以安全删除app.config了。

    1. 更改项目类型: 右击Data项目 -> Property -> Application 在左侧面板 -> 输出类型 -> 类库

    2. 添加项目引用: 右键单击Web项目 -> 添加 -> Reference.. -> Projects 在左侧面板中 ->检查数据项目 -> OK

    最后,只使用web.config中的连接字符串的原因是:Data项目被视为一个类库,它会在运行时从web.config中获取配置。如果你单独运行 Data 项目,它会取而代之的是 app.config 中的配置。

    【讨论】:

    • 谢谢Shawn,我明白为什么现在要创建App.Config 文件了,正如您所说,Data 项目最初是作为控制台应用程序创建的。我认为这解释了为什么我的解决方案最初在没有 App.Config 的情况下无法工作,但我必须将其更改为下线的类库,然后看到 App.Config 文件没有做任何事情。我有点担心,因为在发布的 bin 文件夹中,Data 项目的配置文件在那里,参数不正确,但看起来它没有被使用。很高兴得到确认是这种情况。
    【解决方案2】:

    两者都是用来配置项目的,唯一的区别是项目的类型。

    来自source

    Web.Config 用于 asp.net 网络项目/网络服务。 (或说 Web 应用程序)

    App.Config 用于 Windows 窗体、Windows 服务、控制台应用程序和 WPF 应用程序(或者说是窗口应用程序)

    因此,您的第二个数据项目可能是基于窗口或控制台的,这就是创建的原因。

    直到项目中的任何文件,您在其他文件中都没有引用,您可以删除并运行该项目。

    理想情况下,在您的主项目中连接字符串,并在处理解决方案或多个项目中的单个连接字符串的数据项目中提供参考。

    https://www.c-sharpcorner.com/UploadFile/8a67c0/web-config-vs-app-config-vs-machine-config/

    【讨论】:

    • 感谢 Ajay,我现在意识到任何新项目最初都是作为控制台应用程序创建的。您提到过在 Data 项目中引用连接字符串。是否有任何额外的工作需要做,或者仅在 Web 项目上引用 Data 项目就足够了,VS 会自动为您引用所有 Web.Config 详细信息?
    • 对不起,我忘了,你可以在你的数据项目中添加连接字符串,在你的主项目中提供数据项目引用的同时,它也会在你的主项目中获取连接字符串。因此,您的数据项目中有一个连接字符串,并在您需要的地方提供数据项目的参考。
    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2011-05-29
    • 1970-01-01
    相关资源
    最近更新 更多