Httpcontextaccessor là gì

Cách tùy chỉnh ràng buộc cấu hình trong ASP.NET Core

7
Jon 2020-07-07 07:35.

Tôi có một ứng dụng web ASP.NET Core nhiều người thuê. Mô hình thuê nhà hiện tại là mỗi người thuê nhà có một ứng dụng web và cơ sở dữ liệu SQL riêng biệt. Tôi đang cố gắng kiến ​​trúc lại nó để nhiều người thuê sẽ được phục vụ bởi một ứng dụng web duy nhất [nhưng duy trì một cơ sở dữ liệu riêng biệt cho mỗi người thuê]. Tôi đã theo dõi loạt bài đăng trên blog này nhưng tôi đã gặp một chút trở ngại về cấu hình.

Ứng dụng sử dụng nhiều hệ thống cấu hình ASP.NET Core và có nhà cung cấp EF Core tùy chỉnh tìm nạp các giá trị cấu hình từ cơ sở dữ liệu. Tôi muốn giữ lại điều này nếu có thể, sẽ rất tốn công sức để tách ra và thay thế bằng thứ khác [hàng tá cài đặt cấu hình được sử dụng ở hàng trăm nơi].

Mã hiện tại rất chuẩn:

public class MyAppSettings { public string FavouriteColour { get; set; } public int LuckyNumber { get; set; } } public class Startup { public Startup[IConfiguration configuration] { Configuration = configuration; } public void ConfigureServices[IServiceCollection services] { services.AddOptions[]; services.Configure[Configuration.GetSection["MyAppSettings"]]; // etc.... } } // custom EF Core config provider wired up in Program.Main, but that doesn't actually seem relevant

Tôi đã cập nhật nhà cung cấp tùy chỉnh của mình để nó tìm nạp tất cả các giá trị cấu hình từ tất cả các cơ sở dữ liệu đối tượng thuê đã biết và thêm tất cả chúng vào hệ thống cấu hình, có tiền tố là số nhận dạng đối tượng thuê, vì vậy danh sách tất cả các giá trị cấu hình được tìm nạp từ n cơ sở dữ liệu khác nhau có thể trông giống như sau:

Key Value =============================================== TenantABC:MyAppSettings:FavouriteColour Green TenantABC:MyAppSettings:LuckyNumber 42 TenantDEF:MyAppsettings:FavouriteColour Blue TenantDEF:MyAppSettings:LuckyNumber 37 ... TenantXYZ:MyAppSettings:FavouriteColour Yellow TenantXYZ:MyAppSettings:LuckyNumber 88

Những gì tôi muốn có thể làm là bằng cách nào đó tùy chỉnh cách cấu hình bị ràng buộc để nó giải quyết đối tượng thuê cho yêu cầu hiện tại và sau đó sử dụng các giá trị thích hợp, ví dụ: một yêu cầu trên abc.myapp.com sẽ tuân theo cấu hình giá trị "Green" và "42", v.v., mà không cần phải thay đổi tất cả các vị trí phụ thuộc tiêm IOptionsMonitor[hoặc IOptionsSnapshot, v.v.]. Loạt blog được liên kết có một bài đăng về cấu hình bao gồm một số vấn đề mà tôi mong đợi cuối cùng tôi sẽ giải quyết xung quanh bộ nhớ đệm, v.v., nhưng nó dường như không phục vụ cho trường hợp sử dụng các cài đặt hoàn toàn khác nhau cho những người thuê khác nhau. Về mặt khái niệm, nó có vẻ đủ đơn giản, nhưng tôi không thể tìm thấy nơi chính xác để kết nối. Vui lòng giúp đỡ!

Video liên quan

Chủ Đề