2015-12-03 15 views
7

Trong ASP.NET 5 (RC1) mã của tôi Tôi có một appsetting.json mà trông giống như sau:Sử dụng một mảng trong cài đặt ứng dụng web Azure

{ 
    "SomeSettings": { 
     "PropA": "ValueA", 
     "PropB": [ 
      "ValueB1", 
      "ValueB2" 
     ] 
    } 
} 

Những giá trị được sử dụng khi chạy mã trên máy dev của tôi (ví dụ: localhost). Nếu tôi muốn ghi đè lên "SomeSettings" trong các thiết lập ứng dụng của Azure cho ứng dụng wep, làm thế nào tôi sẽ chỉ định mảng "PropB"?

Các SomeSettings.cs lớp mà tôi muốn để lưu trữ các thông tin trong vẻ bề ngoài như thế này:

public class SomeSettings 
{ 
    public string PropA { get; set; } 
    public List<string> PropB { get; set; } 
} 

Vấn đề là "PropB" - làm thế nào để tôi chỉ định một mảng hoặc Danh sách dưới dạng chuỗi trong Azure - là điều này thậm chí có thể?

Trong constructor lớp Startup của tôi, tôi có:

var builder = new ConfigurationBuilder() 
    .AddJsonFile("appsettings.json") 
    .AddEnvironmentVariables(); 

Và trong các phương pháp Configure lớp Startup của tôi, tôi có:

var someSettings = configuration.GetSection("SomeSettings").Get<SomeSettings>(); 

Trả lời

19

Thêm các thiết lập dưới "Cài đặt ứng dụng" như thế này sẽ làm các trick ... Lưu ý ": 0" và ": 1" bên dưới

Định dạng: Khóa -> Giá trị

SomeSettings:PropA -> AzureValueA 
SomeSettings:PropB:0 -> AzureValueB1 
SomeSettings:PropB:1 -> AzureValueB2 
+0

Tính đến hôm nay, nó hoạt động rất tốt. Chỉ muốn xác nhận cách tiếp cận vẫn còn ở đây. Chúng tôi sử dụng VSTS để triển khai các đối số WebApp thông qua các tập lệnh PS, bây giờ chúng tôi có thể đẩy mảng. Cảm ơn. – Alezis

-3

cách tiếp cận đơn giản là lưu trữ các JSON như chuỗi trong AppSetting, và de-serialize một mình

var serializer = new JavaScriptSerializer(); 
var settings = serializer.Deserialize<SomeSettings>(configuration.GetSection("SomeSettings")); 

hoặc bạn sẽ phải tạo cấu hình khách hàng của riêng bạn tôi tin tưởng. https://msdn.microsoft.com/en-us/library/2tw134k3.aspx

Các vấn đề liên quan