判断是在.NET的生产环境中还是在.NET的开发环境中的最佳方法

判断是在.NET的生产环境中还是在.NET的开发环境中的最佳方法,.net,vb.net,web-applications,development-environment,production-environment,.net,Vb.net,Web Applications,Development Environment,Production Environment,我希望在生产环境和开发环境中发送不同的电子邮件,例如在测试时只向我发送电子邮件。我知道我可以在webconfig文件中设置应用程序值,或者在发送电子邮件之前检查url。我想知道做这件事的最佳实践是什么,或者是否有其他我不知道的可能更好的选择?非常感谢您提供有关此主题的任何信息。我使用的是所谓的。在VB中,它仅被称为 我有这样一个助手方法: public static bool IsDebug() { #if DEBUG return true; #else

我希望在生产环境和开发环境中发送不同的电子邮件,例如在测试时只向我发送电子邮件。我知道我可以在webconfig文件中设置应用程序值,或者在发送电子邮件之前检查url。我想知道做这件事的最佳实践是什么,或者是否有其他我不知道的可能更好的选择?非常感谢您提供有关此主题的任何信息。

我使用的是所谓的。在VB中,它仅被称为

我有这样一个助手方法:

public static bool IsDebug()
{
    #if DEBUG
        return true;
    #else
        return false;
    #endif
}
然后,在代码中的任何地方都可以调用此方法,并在运行时告诉您代码是在
Debug
(开发)中运行,还是在
版本(生产)中运行


这是等效的

与其更改代码,不如将开发邮件服务器设置为仅向您发送邮件,而不考虑“收件人地址”字段


似乎比编写代码更好。

好吧,只有您可以确定什么是生产和什么是开发,因此web.config中的标志是可以的,但更优雅的解决方案将涉及(DI)ala等模式

DI背后的关键概念是通过动态提供关于在运行时实例化哪个类的信息来解耦/隔离实现中的变化。例如,在本例中,您的所有代码都将被编写为处理“邮件”接口(不管它是prod还是dev环境),并且您将配置DI框架来实例化邮件实现类的生产或开发版本。它有点干净,因为您没有公开和增加配置参数值

当然,这里有一个学习曲线,因此在项目的这个阶段可能不可行,但一定要记住。

你可以使用IIS让你的应用程序从部署到的相应环境中“继承”全局上下文设置

在安装.NET应用程序的父目录中(例如
/inetpub/wwwroot.web.config
,甚至在根web.config(
\Windows\Microsoft.NET\Framework\ver\web.config
)添加特定于环境的设置,例如:

在生产中


在开发中



并非每次重新部署应用程序时都会部署这些环境上下文设置。此外,部署到服务器上的所有其他应用程序也可以继承这些设置。

如果您只想在非生产状态下将电子邮件发送给自己,请更改“收件人”字段中的电子邮件地址

因此,在数据库或配置文件中更改它,无论您将该值放在何处

应用程序确定您是否在开发服务器中的方式是使用“ASPNETCORE_环境”


您可以查看此链接,

检查整个站点的web配置值是否会降低性能?@user1572948应用程序设置会被读取一次并缓存,但是进一步的性能增强显然是可能的。感谢您提供的信息,如果它们被读取一次并缓存,那么对我来说应该不是问题。谢谢,是的,我可以设置IIS中的smtp。我想我还可以将其设置为将电子邮件存储在文件夹中,而不是发送电子邮件。如果它是在发布模式下运行的,但它处于暂存状态,因此我们仍然希望在那里排除此功能,该怎么办?