Tôi muốn gửi email khác nhau về sản xuất sau đó môi trường phát triển, chẳng hạn như chỉ gửi email cho tôi trong khi thử nghiệm. Tôi biết rằng tôi có thể đặt giá trị ứng dụng trong tệp webconfig hoặc kiểm tra url trước khi gửi email. Tôi muốn biết thực hành tốt nhất để làm điều này là gì hoặc nếu có một số tùy chọn khác mà tôi không biết về điều đó có thể tốt hơn? Mọi thông tin về chủ đề này sẽ được đánh giá cao.Cách tốt nhất để biết liệu trong môi trường sản xuất hoặc phát triển trong .NET
Trả lời
Tôi sử dụng tên gọi là Preprocessor Directives (in C#). Trong VB nó được gọi là chỉ Directives.
Tôi có một phương pháp helper như thế này:
public static bool IsDebug()
{
#if DEBUG
return true;
#else
return false;
#endif
}
Sau đó, bất cứ nơi nào trong mã người ta có thể gọi phương pháp này và trong thời gian chạy và nó sẽ cho biết nếu mã đang được chạy trong Debug
(phát triển) hoặc nếu đó là phiên bản Release
(sản xuất).
Dưới đây là tương đương #If...Then...#Else Directives in (VB).
Thay vì thay đổi mã của bạn, tại sao bạn không thiết lập mail server phát triển của bạn để mail chỉ cho bạn không phụ thuộc vào địa chỉ TỚI lĩnh vực?
Có vẻ tốt hơn là viết mã để làm điều đó.
Vâng, chỉ có bạn mới có thể xác định sản xuất là những gì và phát triển là gì, do đó, một lá cờ trong web.config là ok, nhưng một giải pháp thanh lịch hơn sẽ đòi hỏi một mô hình như Dependency Injection (DI) ala Spring.Net, StructureMap, và Castle Windsor đến tên một vài.
Khái niệm chính đằng sau DI là tách/cô lập các biến thể trong triển khai bằng cách tự động cung cấp thông tin về lớp học để khởi tạo trong thời gian chạy. Trong trường hợp này, ví dụ, tất cả mã của bạn sẽ được viết để đối phó với giao diện 'thư' (không biết đó là môi trường sản xuất hay môi trường dev) và bạn sẽ định cấu hình khung DI của mình để khởi tạo phiên bản sản xuất hoặc phiên bản phát triển của lớp triển khai thư. Đó là một chút sạch hơn trong đó bạn không phơi bày và proliferating config giá trị tham số.
Chắc chắn có một đường cong học tập ở đó mặc dù, vì vậy nó có thể không khả thi ở giai đoạn này của dự án của bạn, nhưng chắc chắn một cái gì đó để ghi nhớ.
Bạn có thể sử dụng web config inheritance của IIS để cho phép ứng dụng của bạn 'kế thừa' cài đặt ngữ cảnh chung từ môi trường tương ứng mà nó được triển khai.
Trong một thư mục cha của nơi ứng dụng NET của bạn đã được cài đặt (ví dụ /inetpub/wwwroot.web.config
, hoặc thậm chí web.config gốc (\Windows\Microsoft.NET\Framework\ver\web.config
), thêm môi trường của bạn cài đặt cụ thể, ví dụ như
Trong PROD
<appSettings>
<add key="sendMailTo" value="" />
<add key="environmentName" value="PROD" />
</appSettings>
Trong DEV
<appSettings>
<add key="sendMailTo" value="[email protected]" />
<add key="environmentName" value="DEV" />
</appSettings>
các thiết lập bối cảnh môi trường không triển khai mọi lúc bạn triển khai lại ứng dụng của bạn. Ngoài ra, tất cả các ứng dụng khác mà bạn triển khai đến y máy chủ của chúng tôi cũng có thể kế thừa các cài đặt này.
Có bất kỳ chi phí hiệu suất nào với việc kiểm tra các giá trị cấu hình web trong toàn bộ trang web không? – user1572948
@ user1572948 AppSettings được đọc một lần và được lưu trong bộ nhớ cache, tuy nhiên các cải tiến hiệu suất hơn nữa có thể được thực hiện http://stackoverflow.com/questions/1304897/asp-net-web-config-appsettings-performance – StuartLC
Cảm ơn thông tin, nếu chúng đọc một lần và được lưu vào bộ nhớ cache, đây không phải là vấn đề đối với tôi – user1572948
- 1. Môi trường sản xuất/phát triển SharePoint
- 2. Git với môi trường phát triển và sản xuất
- 3. Chạy Tomcat trong môi trường sản xuất
- 4. Môi trường phát triển .NET "Hoàn hảo"?
- 5. Sản xuất Tomcat/môi trường dev
- 6. Sử dụng Maven cho nhiều môi trường triển khai (sản xuất/phát triển)
- 7. Loại trừ các tài sản nhất định khỏi đường ống trong môi trường phát triển?
- 8. Cách tốt nhất để thiết lập môi trường phát triển PHP trên máy Mac là gì?
- 9. Sử dụng node.js trong môi trường sản xuất
- 10. Cơ sở dữ liệu sản xuất và phát triển?
- 11. Cách tốt nhất để thêm biến môi trường trong vải?
- 12. Tác vụ thay thế grunt.js cho môi trường phát triển/sản xuất
- 13. Sử dụng HSQLDB trong môi trường sản xuất
- 14. iPhone - Chuyển đổi giữa cài đặt môi trường địa phương và môi trường sản xuất
- 15. Phát triển .NET của ứng dụng iPhone với MonoTouch - môi trường phát triển nào?
- 16. Nhanh chóng sao chép một cơ sở dữ liệu sản xuất đến môi trường phát triển (SQL Server)
- 17. Làm thế nào để kiểm tra phát triển hoặc sản xuất trong tệp ERB trong Rails?
- 18. Gửi email SMTP qua Django trong môi trường sản xuất
- 19. Rails 3 http_basic_authenticate_with chỉ trong môi trường sản xuất?
- 20. Phân biệt web.config giữa môi trường dev, dàn dựng và môi trường sản xuất
- 21. Lý tưởng cho môi trường phát triển/thử nghiệm/QA để phát triển
- 22. Khởi động lười biếng trong môi trường phát triển
- 23. Môi trường phát triển và triển khai Dotnetnuke
- 24. Ghi đè thư của ActionMailer để giải quyết trong môi trường phát triển
- 25. Phát triển GUI với C++ trong môi trường Windows
- 26. Đăng nhập Facebook - cách phát triển trên cả máy chủ cục bộ và trong sản xuất?
- 27. Làm cách nào để tôi biên dịch trước tài sản trong đường ray trong môi trường phát triển?
- 28. Phát triển Web .NET Các thực tiễn tốt nhất
- 29. Rails môi trường sản xuất phá vỡ với chu kỳ
- 30. Windows Live Id OAuth với môi trường phát triển trong C# .net
Cảm ơn bạn, tôi có thể thiết lập smtp trong IIS. Tôi nghĩ rằng tôi cũng có thể thiết lập để lưu trữ email trong một thư mục thay vì gửi chúng. – user1572948