web.config中的静态值

Ste*_*vds 7 asp.net asp.net-mvc web-config

我有一个在2台服务器上运行的项目.1个testserver与testDB连接,1个在真实服务器上,与真正的DB连接.

这个项目的每个运行实例中唯一不同的是web.config.

我想做的是有可能在web.config中设置一个bool值,然后可以通过代码读取.如果应用程序处于测试模式,则此bool将为true.我会手动设置它,然后项目会把它读出来,当它确实是,应用程序发送的邮件,然后将保留在内部,所以人们实际上不会收到邮件.我之前设置了一个public static boolin global.asax但是在Asp.net MVC中,所有内容都内置在一个DLL中,所以在这种情况下我无法在部署的服务器上更改它.

这可能吗?还是会有一个很好的其他解决方案?

Dav*_*enn 19

正如其他人所说,这就是appSettings你的web.config 的部分

<configuration>
  <appSettings>
    <add key="isInTestMode" value="true"/>
  </appSettings>
  ...
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后可以使用WebConfigurationManager访问

bool isInTestMode = Boolean.Parse(WebConfigurationManager.AppSettings["isInTestMode"]);
Run Code Online (Sandbox Code Playgroud)

然而

如果您只对测试时不发送电子邮件感兴趣,那么您可以使用web.config配置.NET以将电子邮件转储到本地目录而不是将它们发送到邮件服务器

<system.net>
  <mailSettings>
    <smtp deliveryMethod="SpecifiedPickupDirectory">
      <specifiedPickupDirectory pickupDirectoryLocation="C:\MailDump\" />
      <network host="localhost"/>
    </smtp>
  </mailSettings>
  ...
</system.net>
Run Code Online (Sandbox Code Playgroud)

如果您的代码未覆盖默认邮件SMTP服务器设置,则此方法有效.