从使用 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的主要内容,如果未能解决你的问题,请参考以下文章

Windows10使用IIS部署Django项目

从 Visual Studio 2012 到远程 IIS 8 服务器的 Web 部署

在 IIS 上部署后从数据库返回的 MVC 4.0 .NET 应用程序和值

部署到 IIS 后,对控制器的 API 调用中断

在部署到IIS应用程序时升级FSharp.Core版本,程序集引用错误

iis怎样部署使用 DevExpress控件的网站