从使用 IIS 部署的 webapplicaion 使用的库中读取 web.config
Posted
技术标签:
【中文标题】从使用 IIS 部署的 webapplicaion 使用的库中读取 web.config【英文标题】:Read web.config from library consumed by the webapplicaion deployed using IIS 【发布时间】:2015-02-16 00:23:35 【问题描述】:我在 IIS 上部署了一个 Web 应用程序。此 Web 应用程序正在使用一个想要访问 Web.config 的库。
示例: Foo.dll 是部署在 IIS 上的 Web 应用程序 Foo.Utility.dll 被 Foo.dll 使用
Foo.Utility namepsace 中有一段代码想要从 Foo 应用程序访问 web.config 并读取配置值
Configuration config = WebConfigurationManager.OpenWebConfiguration(null);
string cacheDir = config.AppSettings.Settings["abc"].Value;
当前 config.FilePath = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
将我的代码更改为:
Configuration config = WebConfigurationManager.OpenWebConfiguration(Assembly.GetCallingAssembly().Location);
string cacheDir = config.AppSettings.Settings["abc"].Value;
现在我的 Assembly.GetCallingAssembly().Location 是:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\62f5c902\849205ff\assembly\dl3\c28d4647\10e128d3_7449d001\foo .dll
有人可以帮助我了解如何从使用 IIS 部署我的应用程序的地方读取 web.config 吗?
如需更多信息或问题不清楚,请在下方评论。会更新的
【问题讨论】:
【参考方案1】:您必须使用 System.Configuration 中的 ConfigurationManager。首先,您必须添加对 System.Configuration.dll 程序集的引用,然后像这样使用它:
using System.Configuration;
...
string valueOfAbc = ConfigurationManager.AppSettings["abc"];
ConfigurationManager 将从应用程序的主机读取配置文件。在您的情况下,是 web.config 文件。
参考:
-
ConfigurationManager Class
Application Configuration Files
【讨论】:
您应该注意,这需要引用System.Configuration.dll
程序集,默认情况下不引用。以上是关于从使用 IIS 部署的 webapplicaion 使用的库中读取 web.config的主要内容,如果未能解决你的问题,请参考以下文章
从 Visual Studio 2012 到远程 IIS 8 服务器的 Web 部署
在 IIS 上部署后从数据库返回的 MVC 4.0 .NET 应用程序和值