asp.net-mvc - 无法从子 web.config 读取
问题描述
我的根 web.config 包含:
<configuration>
<configSections>
....
</configSections>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
....
</appSettings>
....
<configuration>
我在该位置创建了另一个 web.config 文件,~Credentials/web.config
其中包含:
<configuration>
<appSettings>
<add key="mail.smtpServer" value="smtp.gmail.com" />
<add key="mail.port" value="587" />
</appSettings>
</configuration>
在我的控制器内部,我试图像这样访问它们:
private readonly string _smtpServer = ConfigurationManager.AppSettings["mail.smtpServer"];
private readonly int _port = Convert.ToInt32(ConfigurationManager.AppSettings["mail.port"]);
如果邮件设置在根目录中,web.config
则控制器可以读取它们,但如果设置在子目录中,web.config
则无法找到它们,它们仍然为空。我该如何解决这个问题?
解决方案
这可能是层次结构问题。根 web config 文件写入根文件夹和后续子文件夹的配置规则。但是根配置参数可以被子文件夹根目录中的 web.config 覆盖。如果您的控制器位于根文件夹 ~credentials 或其子文件夹中,则子 web.config 可以覆盖您在根 Web 配置中设置的参数。
<configuration>
<configSections>
....
</configSections>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="mail.smtpServer" value="" />
<add key="mail.port" value="" />
....
</appSettings>
....
</configuration>
和孩子 web.config
<configuration>
<appSettings>
<add key="mail.smtpServer" value="smtp.gmail.com" />
<add key="mail.port" value="587" />
</appSettings>
</configuration>
推荐阅读
- windows - Powershell 磁盘管理
- pdftron - PDFTRON 实例未在模型上第二次打开 pdf 文档
- c++ - DLL 中类外的模板定义(错误:不允许定义 dllimport 函数)
- bash - 将终端的输出重定向到 .csv 文件中的特定工作表
- javascript - React + Redux + Hook,状态更新出错
- php - 在 WordPress 的 do_shortcode() 中使用 PHP 变量
- matlab - “面积”和“周长”维度 - Matlab
- javascript - Angular 9 Google Maps API Place Autocomplete
- c# - 检查字符串是否包含 Visual Basic 列表中的任何字符串
- python - 使用循环时无法在 django 中加载静态图像