我的根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
中,那么它无法找到它们,它们将保持为空。我怎么解决这个问题?
答案 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>