2017-07-20 15 views
11

Từ những gì tôi hiểu đúng cách cài đặt cổng lắng nghe cho bản xem trước ASP Dotnet Core 2 1/2 bằng cách tạo phần Kestrel trong appsettings.json trong định dạng sau:Sử dụng appsettings.json để định cấu hình cổng nghe Kestrel Xem trước lõi 2 của DotNet 2

"Kestrel": { 
    "EndPoints": { //Could also be Endpoints, it's a bit unclear 
     "Http": { 
     "Address": "127.0.0.1", 
    "Port": 9001 //the port you want Kestrel to run on 
}, 

tôi đã cố gắng để thiết lập các ứng dụng web mẫu trên một máy Debian, nhưng khi tôi bắt đầu ứng dụng, nó viết ra rằng ứng dụng được liệt kê trên cổng 5000, cổng mặc định ..

Tôi biết rằng appsettings.json được đọc, bởi vì khi tôi thay đổi mức ghi nhật ký thành Trace, tôi nhận được nhiều thông tin hơn khi khởi động, bao gồm cả không có Điểm cuối được tìm thấy và Trang sẽ sử dụng cổng 5000 tiêu chuẩn.

Tôi đã thử tìm kiếm mã nguồn aspnet trên Github và tôi có thể tìm thấy khu vực mà phần Kestrel được đọc từ cấu hình (https://github.com/aspnet/Identity/blob/e38759b8a2de1b7a4a1c19462e40214b43c1cf3b/samples/IdentityOIDCWebApplicationSample/MetaPackage/KestrelServerOptionsSetup.cs), nhưng bạn có thể thấy nó giống như một dự án mẫu.

Tôi đang thiếu gì, đây có phải là cách tiêu chuẩn để định cấu hình Kestrel trong lõi ASP Dotnet 2 không?

Trả lời

3

Hỗ trợ cho cấu hình Kestrel qua appsettings.json đã được giảm xuống trong 2.0.

Xem this vấn đề bình luận:

Kestrel hỗ trợ tập tin cấu hình được cắt từ 2.0.0. Các giá trị cấu hình cần được đọc thủ công trong mã khởi tạo của bạn.

Để làm được việc này, bạn có thể làm một cái gì đó như thế này trong program.cs:

public static IWebHost BuildWebHost(string[] args) => 
WebHost.CreateDefaultBuilder(args) 
.UseStartup <Startup>() 
.UseKestrel(options => { 
    var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); 
    if (env == "DEVELOPMENT") { 
    options.Listen(IPAddress.Loopback, 9001); 
    options.Listen(IPAddress.Loopback, 9002, listenOptions => { 
    listenOptions.UseHttps("certificate.pfx", "password"); 
    }); 
    } 

}) 
.Build(); 
0

Tôi đang sử dụng tệp Program.cs và hosting.json để định cấu hình Kestrel. Ví dụ:

var config = new ConfigurationBuilder() 
       .SetBasePath(Directory.GetCurrentDirectory()) 
       .AddJsonFile("hosting.json", optional: true, reloadOnChange: true) 
       .Build(); 

var host = new WebHostBuilder() 
       .UseConfiguration(config) 
       .UseKestrel() 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseStartup<Startup>(); 

hosting.json:

{ 
    "urls": "http://localhost:4444;http://localhost:4445;" 
} 

Đây là exapmle cho lõi phiên bản DotNet mới nhất. Đối với các phiên bản trước: hosting.json:

{ 
    "server.urls": "http://localhost:4444;http://localhost:4445;" 
} 
+0

này cách tương tự như của ông tôi đã cấu hình Kestrel trong lõi 1.1, và đó là tôi có thể làm theo cách này , nhưng tôi đã đọc nhiều nơi rằng cách tương lai để thực hiện nó phải bằng cách sử dụng phần Kestrel trong appsettings.json. https://codingblast.com/asp-net-core-2-preview/ –

+0

Nó cũng được demostrated trong video này https://youtu.be/h9hlN0DOKRM –

+0

Tôi thấy rằng video và nó trông rất đơn giản. Tôi đã thử bản thân mình bằng cách sử dụng cùng một phương pháp và tôi không thể làm cho nó hoạt động. Bất cứ ai khác có may mắn với điều này? – sshirley

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