我想在生產環境和發展環境方面發送不同的電子郵件,例如在測試期間僅向我發送電子郵件。我知道我可以在webconfig文件中設置應用程序值,或者在發送電子郵件之前檢查URL。我想知道這樣做的最佳做法是什麼,或者如果有其他一些我不知道的選擇可能會更好?任何關於這個主題的信息將不勝感激。最好的方式來判斷是否在.NET的生產環境或開發環境中
回答
我使用了所謂的Preprocessor Directives (in C#)。在VB中,它僅被稱爲Directives。
我有一個輔助方法是這樣的:
public static bool IsDebug()
{
#if DEBUG
return true;
#else
return false;
#endif
}
然後在代碼的任何地方可以調用該方法,並在運行時,它會告訴我們,如果代碼在Debug
(開發中)正在運行,或者如果這是Release
版本(製作)。
而不是改變你的代碼,你爲什麼不開發的郵件服務器只郵件無論設置爲您地址字段?
似乎比編寫代碼更好。
嗯,只有你自己才能決定什麼是生產,什麼是發展,所以在web.config中的標誌是好的,但一個更優雅的解決方案將涉及ALA Spring.Net像Dependency Injection(DI)的模式,StructureMap和Castle Windsor命名少數。
DI背後的關鍵概念是通過動態提供有關在運行時實例化哪些類的信息來解耦/隔離實現中的變體。例如,在這種情況下,您的所有代碼將被編寫爲處理「郵件」界面(不管它是否是開發環境或開發環境),並且您將配置您的DI框架以實例化生產版本或開發版本郵件實施課。這是更清潔一點,你不暴露和擴散配置參數值。
儘管這裏肯定有學習曲線,所以它在您的項目的這個階段可能不可行,但絕對要牢記。
您可以使用IIS的web config inheritance來允許您的應用程序從它所部署到的相應環境中'繼承'全局上下文設置。
在已安裝的.NET應用程序,其中的父目錄(例如/inetpub/wwwroot.web.config
,甚至根web.config(\Windows\Microsoft.NET\Framework\ver\web.config
),加上環境的具體設置,例如,
在PROD
<appSettings>
<add key="sendMailTo" value="" />
<add key="environmentName" value="PROD" />
</appSettings>
在DEV
<appSettings>
<add key="sendMailTo" value="[email protected]" />
<add key="environmentName" value="DEV" />
</appSettings>
這些環境方面的設置不會部署每次你重新部署應用。此外,在部署到y的所有其他應用我們的服務器也可以繼承這些設置。
在整個站點檢查web配置值是否有任何性能成本? – user1572948
@ user1572948 AppSettings被讀取一次並緩存,但進一步的性能增強是可能的http://stackoverflow.com/questions/1304897/asp-net-web-config-appsettings-performance – StuartLC
感謝您的信息,如果他們只讀過一次然後緩存起來對我來說不應該成爲一個問題 – user1572948
- 1. 生產環境所需的Mysql2,而不是開發環境
- 2. asp.net生產/開發環境
- 3. SharePoint開發/生產環境
- 4. 開發和生產環境
- 5. Tomcat生產/開發環境
- 6. 從SQL 2005的生產環境中創建開發環境
- 7. PHP中的開發和生產環境
- 8. Linux中最好的C++開發環境
- 9. 不同於測試和生產環境的開發環境?
- 10. .NET的開發環境
- 11. 的Git與開發和生產環境
- 12. 最好的JavaScript開發環境?
- 13. websocket-rails在開發環境但不是生產環境中工作
- 14. Symfony2的:決定一個控制器從開發環境或生產環境
- 15. 從現有生產環境創建Sharepoint開發環境
- 16. Rails環境看起來像它堅持生產,甚至在開發環境
- 17. 根據分支發送到生產環境或評論環境
- 18. 如何在開發環境和生產環境中定義不同的變量?
- 19. 創建開發和生產環境?
- 20. iOS Parse Push:開發和生產環境
- 21. 區分生產和開發環境
- 22. BIRT和iServer,開發/ QA /生產環境
- 23. CakePHP:管理開發和生產環境
- 24. 生產和開發項目環境
- 25. SpringBoot:配置生產與開發環境
- 26. 開發/質量保證/生產環境
- 27. 「完美」.NET開發環境?
- 28. 生產環境中的node.js
- 29. 生產環境中的System.Runtime.Serialization.InvalidDataContractException,而不是測試環境
- 30. 開發環境的方法
謝謝,是啊,我可以在IIS中設置smtp。我想我也可以將它設置爲將電子郵件存儲在一個文件夾中而不是發送它們。 – user1572948