根据所选配置更改代码行

时间:2012-06-21 10:59:51

标签: c# asp.net-mvc-3 web-config

在我的ASP.NET MVC 3应用程序中,我有2个配置设置;玩和生活。

现在,我必须在使用基于我当前所选内容的配置加载应用程序之前更改以下代码:

Mailer.SendMessageTo("playEmailAddress", "MailBody");
// Mailer.SendMessageTo("liveEmailAddress", "MailBody");

因此,如果我选择了Play个配置,我会将liveEmailAddress行注释掉,反之亦然

我想做的是使用web.config文件为我更改此代码,而无需在每次使用不同配置加载应用程序时手动执行此操作,方法是将代码行放入配置文件,然后从我的类

中的配置文件中读取它

2 个答案:

答案 0 :(得分:1)

您应该在Web配置文件中添加“app key”。给它任意名称如“OptionalEmail”并相应地设置值。

发送电子邮件时,请检查配置文件中的值,如

  

如果(ConfigurationManager.AppSettings [ “OptionalEmail”] == “PlayEmail”)   SendEmail使用PlayEmail地址,其他SendEmail使用Work emai   地址。

希望这有帮助。 “ConfigurationManager.AppSettings [使用键或索引]

请注意,配置转换“xdt”仅在部署Web应用程序时有效

答案 1 :(得分:0)

通常一个配置参数名为" environment" (或类似的)。 此链接说明了如何从web.config中读取:http://msdn.microsoft.com/en-us/library/610xe886.aspx

实现这一目标的一种方法是:

var env = "play";
if( ConfigurationManager.AppSettings["environment"]=="live" ) env="live";
var email = env + "EmailAddress";
Mailer.SendMessageTo(email, "MailBody");

作为附加说明,如果您有多个开发人员,每个人都想要自己的"播放" -Address,那么您可以扩展设置以包含开发人员的计算机名称:

<appSettings>
      <add key="environment" value="play"/>
      <add key="liveEmailAddress" value="a@b.com"/>
      <add key="myCoolPC-playEmailAddress" value="c@d.com"/>
      <add key="otherDevPC-playEmailAddress" value="bubba@test.com"/>
</appSettings>

但是在获得设置之前,您必须将上面的实现更改为主机名前缀,但前提是当前处于播放模式。