【问题标题】:web.config, app.config or both?web.config、app.config 或两者兼而有之?
【发布时间】:2017-02-16 12:54:09
【问题描述】:

我有一个面向 .NET 4.5.2 的 ASP.NET Core 项目。我在项目中有一些旧组件需要 web.config 进行配置,我无法将它们迁移到新的 appsettings.json。现在我正在开发并在控制台模式下运行应用程序,但它将在生产环境中托管在 IIS 中。我的问题是,我必须同时维护 app.config 和 web.config 吗?当我构建应用程序时,我只在包含 app.config 内容的输出文件夹中看到 MyProject.exe.config,但是当我发布它时,我在输出文件夹中看到 MyProject.exe.config 和 web.config。

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    虽然在 IIS 后面运行 Kestrel 时确实需要 web.config,但该 web.config 将仅用于配置 IIS。如果您正在运行 Asp.Net Core,则现有 dll 无法轻松访问 web.config 中的设置。你可以在这里了解更多:Access Web.config settings in Asp.Net Core App?

    【讨论】:

      【解决方案2】:

      web.config 将由 IIS 读取,并且必须配置 IIS 在 Kestrel 前面作为反向代理的行为方式(我想你是如何托管它的)。例如,如果您希望 IIS 转发 Kerberos 身份,那将仍然是唯一配置它的地方,因为它实际上是一个 IIS 配置:<aspNetCore ... forwardWindowsAuthToken="true"/> 所以我会说,是的,您必须维护一个 web.config 如果你想在 IIS 后面托管。然后,对于与 IIS 无关的所有其他内容,我使用的是一直使用的 appsettings.json,在直接到达 Kestrel 时在 dev 中使用,但在 IIS 后面时也在 sttagting 中使用。在您的配置中同时支持这两者(IIS 作为 Kestrel 前面的反向代理)是有意义且正常的,您只需正确区分驱动 IIS 的内容(->web.config)和驱动网站逻辑的内容( ->appsettings.json)。

      【讨论】:

        猜你喜欢
        • 2011-06-17
        • 2015-10-14
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        • 2018-12-01
        • 2020-02-04
        • 1970-01-01
        • 2010-12-17
        相关资源
        最近更新 更多