我想在生产环境和开发环境上发送不同的电子邮件,比如只在测试时发送电子邮件给我。我知道我可以在webconfig文件中设置一个应用程序值,或者在发送电子邮件之前检查url。我想知道这样做的最佳实践是什么,或者是否有一些我不知道的其他选择可能会更好?任何关于这个主题的信息都将不胜感激。
发布于 2012-08-27 11:25:48
我使用的是所谓的Preprocessor Directives (in C#)。在VB中,它只被称为Directives。
我有一个辅助方法,如下所示:
public static bool IsDebug()
{
#if DEBUG
return true;
#else
return false;
#endif
}然后,在代码中的任何地方,你都可以在运行时调用这个方法,它会告诉你代码是否正在Debug (开发)中运行,或者它是否是Release版本(生产)。
下面是等效的#If...Then...#Else Directives in (VB).
发布于 2020-07-02 17:25:33
如果您只想发送电子邮件给您自己,如果它不是生产,那么通过更改“收件人”字段中的电子邮件地址。
所以要么在数据库中更改,要么在配置文件中更改,无论您将该值放在哪里。
应用程序确定您是否在开发服务器中的方式是使用"ASPNETCORE_ENVIRONMENT“。
发布于 2012-08-27 11:45:24
好吧,只有您才能确定什么是生产,什么是开发,所以web.config中的标志是可以的,但更优雅的解决方案将涉及诸如Dependency Injection (DI) ala Spring.Net、StructureMap和Castle Windsor等模式。
DI背后的关键概念是通过动态提供关于在运行时实例化哪个类的信息来解耦/隔离实现中的变化。例如,在这种情况下,您的所有代码都将被编写为处理一个“mail”接口(不管它是prod还是dev环境),并且您需要配置您的DI框架来实例化mail实现类的生产或开发版本。它更干净一些,因为您不会公开和扩散配置参数值。
当然,这是一个学习曲线,所以在项目的这个阶段可能不可行,但一定要记住一些事情。
https://stackoverflow.com/questions/12135854
复制相似问题