无法从子web.config读取

时间:2018-06-12 08:48:11

标签: asp.net-mvc

我的根web.config包含:

<configuration>
    <configSections>
    ....
    </configSections>
    <appSettings>
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        ....
    </appSettings>
    ....
<configuration>

我在~Credentials/web.config位置创建了另一个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中,那么它无法找到它们,它们将保持为空。我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

这可能是一个层次结构问题。根网络配置文件写入根文件夹和后续子文件夹的配置规则。但是根配置参数可以被子文件夹的根目录中的web.config覆盖。如果您的控制器位于根文件夹〜凭据或其子文件夹中,则子web.config可以覆盖您在根网站配置中设置的参数。

<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>