【问题标题】:Reading the web.config file from Global.asax从 Global.asax 读取 web.config 文件
【发布时间】:2015-07-03 14:40:14
【问题描述】:

我在我的 Web API 项目中启动了代码,该代码尝试从默认情况下发布在 bin 目录中的 web.config 文件中读取值。因为应用初始化点是Global.asax,所以这个级别没有web.config,所以我需要弄清楚如何在bin文件夹中引用它。

这是我的 IIS 目录的根目录:

每当我尝试使用ConfigurationManager.AppSettings 从 web.config 文件中读取值时,它们都会返回 null。只有当我将 web.config 移出 bin 文件夹并进入根目录时,才能找到值。

我尝试添加一些代码,暗示它会在尝试读取值之前强制路径到正确的默认位置(在 bin 文件夹内),但这也不起作用:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Fix web.config location
        var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin\\web.config");
        AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", path);

        var appId = ConfigurationManager.AppSettings["ApplicationId"];
    }
}

有没有办法强制使用 bin 文件夹中的 web.config 路径?

【问题讨论】:

    标签: asp.net-web-api web-config global-asax configurationmanager


    【解决方案1】:

    首先,我不明白为什么要将 web.config 文件保存在 bin 文件夹中。 web.config 文件的默认路径总是与 global.asax 相同的文件夹,即应用程序的根目录。我一直在 ASP.NET、ASP.NET WebAPI 和 ASP.NET MVC 应用程序中工作,它们都将 web.config 保存在与 Global.asax 相同的文件夹中。

    如果将 web.config 文件从 bin 目录移动到与 global.asax 相同的目录,是否会丢失任何内容?

    此外,如果它是您要读取的连接字符串(正如我从您的previous 问题中得到的那样),您可以在下面执行并将您的 connectionSettings 放在 bin 目录的这个 web.config 中。

    <connectionStrings configSource="bin\connection.config"/>
    

    您可以在this 文章中找到有关配置文件的更多详细信息。

    【讨论】:

      猜你喜欢
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 2015-11-27
      • 1970-01-01
      • 2010-12-26
      • 2021-12-12
      • 1970-01-01
      相关资源
      最近更新 更多