我在我的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路径?
答案 0 :(得分:2)
首先,我不知道你为什么要将你的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文章。