Tôi cần thay đổi chuỗi kết nối của mình trong tệp web.config dựa trên biến môi trường (cho các môi trường khác nhau, như dev/dàn dựng/sản xuất, v.v.). Tôi đã thấy các giải pháp khác sử dụng các tác vụ xây dựng để thực hiện các cấu hình thay đổi khác nhau, nhưng không thể tìm thấy thứ gì đó sẽ cho phép tôi thay đổi chuỗi kết nối của mình dựa trên biến môi trường. Có ai biết về bất kỳ cách nào để làm điều này?Thay đổi tệp web.config dựa trên Biến môi trường trong ASP.NET
Trả lời
Chúng tôi tận dụng các thuộc tính configSource cho appSettings và connectionStrings yếu tố trong web.config.
Về cơ bản, chúng tôi có cùng tệp web.config cho tất cả các môi trường của chúng tôi: dev, qa và sản xuất.
Sau đó, chúng tôi sử dụng riêng biệt "môi trường cụ thể" file .. Ví dụ ...
Trong web.config:
<?xml version="1.0"?>
<configuration>
<appSettings configSource="local.appsettings.config" />
<connectionStrings configSource="local.connectionstrings.config" />
</configuration>
Sau đó, chúng tôi duy trì các tập tin sau đây:
local.appsettings.config.development
local.appsettings.config.qa
local.appsettings.config.production
local.connectionstrings.config.development
local.connectionstrings.config.qa
local.connectionstrings.config.production
Vì chúng tôi đã biên dịch trước tất cả các ứng dụng asp.net trước khi triển khai, chúng tôi đã có một tác vụ msBuild tùy chỉnh được sử dụng bởi giải pháp CI của chúng tôi sao chép các tệp cấu hình phù hợp (dựa trên môi trường đích ment) vào file config thích hợp ...
Vì vậy, nếu chúng ta đang triển khai để dev, local.appsettings.config.development -> local.appsettings.config
Nếu chúng ta đang triển khai để qa, địa phương .appsettings.config.qa -> local.appsettings.config
Điều này cho phép chúng tôi giữ cho web.config lõi giống nhau trên tất cả các môi trường của chúng tôi.
Làm thế nào để có hai chuỗi kết nối và một biến khác, như "isTesting
" trong web.config của bạn, sau đó dựa trên giá trị của isTesting
hãy chọn chuỗi kết nối nào để sử dụng?
bạn cũng có thể sử dụng các phần cấu hình và dựa trên chuyển đổi tên máy chủ giữa các phần. theo cách này bạn có thể có các phím có tên giống nhau.
Bạn có thể đặt web.config cho từng môi trường trong trình quản lý cấu hình bằng cách sử dụng các sự kiện dựng sẵn. Tôi đã thử điều này với kết quả xuất sắc.
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
Khi bạn có debug và xây dựng bạn có thể có local/tiền sản xuất/sản xuất ... vv
- 1. Thay đổi biến môi trường trong eclipse
- 2. Thay đổi URL tham chiếu dịch vụ WCF dựa trên môi trường
- 3. 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
- 4. Biến môi trường trong Python trên Linux
- 5. LINQ to Sql - Đặt chuỗi kết nối động dựa trên biến môi trường
- 6. Tham chiếu Biến môi trường trong web.xml
- 7. Về tệp application.properties và biến môi trường
- 8. Biến môi trường Ruby
- 9. Biến môi trường Javascript
- 10. Môi trường lập trình giao diện web để thay thế hệ thống dựa trên Delphi cũ
- 11. Sử dụng biến môi trường cho tệp .config trong .NET
- 12. PropertyPlaceholderCấu hình và biến môi trường trong các tệp .properties
- 13. Truyền các biến môi trường cho một quá trình trong PowerShell 2.0 khi biến được thay đổi nhiều lần
- 14. Đặt Biến môi trường GIT_SSH trong Gitconfig
- 15. Biến môi trường tùy chỉnh trong PHP
- 16. Biến môi trường hoặc tệp cấu hình YAML
- 17. Làm thế nào để bạn xử lý nhiều tệp web.config cho nhiều môi trường?
- 18. AppHarbor Web.config biến đổi không được áp dụng
- 19. Biến môi trường đơn điệu
- 20. $ Biến môi trường PATH cho apache2 trên mac
- 21. Đặt biến môi trường trong javascript
- 22. Đã P/Invoke thay đổi môi trường trong .NET 4.0?
- 23. Môi trường nô lệ Jenkins Thay đổi làm mới
- 24. Thay đổi biến theo yêu cầu môi trường trong Rails tích hợp thử nghiệm
- 25. Khóa SSH trong biến môi trường
- 26. Lấy biến môi trường trong symfony2 parameters.yml
- 27. Biến đổi MSBuild web.config không hoạt động
- 28. cách đặt biến môi trường từ nội dung tệp?
- 29. Đặt biến môi trường từ Gradle
- 30. Process.Start() và biến môi trường PATH
Hey cảm ơn, là có cách nào để làm điều này dựa trên một biến môi trường mặc dù? Tôi muốn làm điều đó theo cách này nhưng khách hàng của tôi yêu cầu làm điều đó dựa trên một biến môi trường mà họ đã thiết lập trong mỗi môi trường khác nhau của họ. Nếu nó làm điều đó, tôi thiếu một phần (nơi nó nhìn vào một biến môi trường). Cảm ơn – Ryan
Bạn sẽ phải giữ các chuỗi kết nối cho từng môi trường trong một tệp .config duy nhất .. cái gì đó như: connectionStrings> Sau đó, trong mã của bạn (giả sử bạn có một loại lớp "đối tượng cấu hình" thì bạn có thể đọc đúng chuỗi dựa trên biến môi trường Lỗi * MAJOR * với điều đó kế hoạch là .. bây giờ bạn có tất cả các thông tin cấu hình sản xuất của bạn trong cùng một tập tin như dev và qa của bạn –
datacop
Tôi sử dụng methode này với các tập tin configSource trong thư mục App_Data. thư mục App_Data, trộn nó sau với cấu hình môi trường máy chủ của bạn. –