首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET中判断是在生产环境还是开发环境中的最佳方法

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

Stack Overflow用户
提问于 2012-08-27 11:16:37
回答 5查看 13.5K关注 0票数 7

我想在生产环境和开发环境上发送不同的电子邮件,比如只在测试时发送电子邮件给我。我知道我可以在webconfig文件中设置一个应用程序值,或者在发送电子邮件之前检查url。我想知道这样做的最佳实践是什么,或者是否有一些我不知道的其他选择可能会更好?任何关于这个主题的信息都将不胜感激。

EN

回答 5

Stack Overflow用户

发布于 2012-08-27 11:25:48

我使用的是所谓的Preprocessor Directives (in C#)。在VB中,它只被称为Directives

我有一个辅助方法,如下所示:

代码语言:javascript
复制
public static bool IsDebug()
{
    #if DEBUG
        return true;
    #else
        return false;
    #endif
}

然后,在代码中的任何地方,你都可以在运行时调用这个方法,它会告诉你代码是否正在Debug (开发)中运行,或者它是否是Release版本(生产)。

下面是等效的#If...Then...#Else Directives in (VB).

票数 6
EN

Stack Overflow用户

发布于 2020-07-02 17:25:33

如果您只想发送电子邮件给您自己,如果它不是生产,那么通过更改“收件人”字段中的电子邮件地址。

所以要么在数据库中更改,要么在配置文件中更改,无论您将该值放在哪里。

应用程序确定您是否在开发服务器中的方式是使用"ASPNETCORE_ENVIRONMENT“。

您可以查看此链接,Use multiple environments in ASP.NET Core

票数 3
EN

Stack Overflow用户

发布于 2012-08-27 11:45:24

好吧,只有您才能确定什么是生产,什么是开发,所以web.config中的标志是可以的,但更优雅的解决方案将涉及诸如Dependency Injection (DI) ala Spring.NetStructureMapCastle Windsor等模式。

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

当然,这是一个学习曲线,所以在项目的这个阶段可能不可行,但一定要记住一些事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12135854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档