Tệp cấu hình mặc định được sử dụng bởi máy chủ Kestrel là hosting.json
. Tên đã được thay đổi nhiều lần trong các phiên bản beta khác nhau. Nếu bạn sử dụng hiện nay project.json
như sau "command"
phần
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
sau đó trong khi khởi động máy chủ từ dòng lệnh bằng cách
dnx web
tập tin hosting.json
sẽ được đọc. Tập tin
{
"server.urls": "http://0.0.0.0:5000"
}
sẽ cấu hình máy chủ để lắng nghe 5000 trên mọi địa chỉ IP4. Cấu hình
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
sẽ thông báo để lắng nghe 5000 trên cả địa chỉ IP4 và IP6.
Người ta có thể chỉ định các tệp cấu hình thay thế bằng ASPNET_ENV
biến môi trường sử dụng hoặc bằng cách sử dụng --config myconfig1.json
(hoặc config=myconfig1.json
). Ví dụ bạn có thể sử dụng
SET ASPNET_ENV=Development
và để tạo hosting.Development.json
tệp với cấu hình cụ thể. Ngoài ra, bạn có thể sử dụng project.json
với
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
và khởi động máy chủ bằng cách sử dụng
dnx webProd
Tôi phải nhắc thêm rằng bạn có thể phải cho phép nghe thêm và đăng ký (để bắt đầu dnx web
). Nó được yêu cầu vì tường lửa và bảo mật cục bộ để lắng nghe các cổng TCP / HTTP mới. Một cái gì đó giống như bên dưới sẽ thực hiện đăng ký cục bộ và lắng nghe 5000 cổng cho mọi người (IPv4 và IPv6):
netsh http add iplisten ipaddress=0.0.0.0:5000
netsh http add iplisten ipaddress=::5000
netsh http add urlacl url=http://+:5000/ user=\Everyone
Để an toàn hơn, bạn có thể điều chỉnh cấu hình trên để cấp các quyền tối thiểu.
CẬP NHẬT: Cảm ơn @BlaneBunderson. Người ta có thể sử dụng * thay vì địa chỉ IP (như http://*:5000
) để nghe trên bất kỳ địa chỉ IP4 và IP6 nào từ bất kỳ giao diện nào. Nên cẩn thận và không sử dụng những
http://*:5000;http://::5000
http://::5000;http://*:5000
http://*:5000;http://0.0.0.0:5000
http://*:5000;http://0.0.0.0:5000
vì nó sẽ yêu cầu đăng ký địa chỉ IP6 ::
hoặc địa chỉ IP4 0.0.0.0
hai lần .
Tương ứng với thông báo
Về mặt kỹ thuật, bất kỳ tên máy chủ nào không phải là "localhost" hoặc địa chỉ IPv4 hoặc IPv6 hợp lệ sẽ khiến Kestrel liên kết với tất cả các giao diện mạng.
Tôi nghĩ rằng hành vi đó có thể được thay đổi trong tương lai. Vì vậy, tôi muốn giới thiệu để chỉ sử dụng *:5000
, 0.0.0.0:5000
và ::5000
tạo cho đăng ký của bất kỳ địa chỉ CNTT.
CẬP NHẬT 2: ASP.NET Core RC2 thay đổi (xem thông báo ) hành vi tải các giá trị mặc định. Người ta phải thực hiện các thay đổi trong Main
tải các cài đặt từ hosting.json
và các tham số dòng lệnh. Dưới đây là một ví dụ về cách sử dụng
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseUrls("http://*:1000", "https://*:1234", "http://0.0.0.0:5000")
.UseEnvironment("Development")
.UseConfiguration(config)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Mã sử dụng trên ba bindings: "http://*:1000"
, "https://*:1234"
, "http://0.0.0.0:5000"
theo mặc định thay vì sử dụng cổng mặc định 5000 theo mặc định (để được chính xác việc sử dụng http://localhost:5000
). Cuộc gọi của .UseConfiguration(config)
được thực hiện sau khi .UseUrls
. Do đó, cấu hình được tải từ hosting.json
hoặc dòng lệnh sẽ ghi đè các tùy chọn mặc định. Nếu một .SetBasePath(Directory.GetCurrentDirectory())
dòng loại bỏ thì dòng hosting.json
sẽ được tải từ cùng một thư mục nơi dll ứng dụng sẽ được biên dịch (ví dụ bin\Debug\netcoreapp1.0
).
Người ta có thể sử dụng cách thực thi như
dotnet.exe run --server.urls=http:
để ghi đè cài đặt mặc định (từ UseUrls
) và cài đặt từ thuộc "server.urls"
tính hosting.json
nếu nó tồn tại.
Theo cách tương tự, người ta có thể ghi đè cài đặt ULR bằng cách đặt biến môi trường
set ASPNETCORE_SERVER.URLS=http:
thì phần khởi động mặc định của ứng dụng đang sử dụng dotnet.exe run
sẽ dùng http://localhost:12541/
để ràng buộc.
Bạn có thể tìm thấy ở đây một ví dụ về việc sử dụng liên kết HTTPS.
Ghi chú: Tên của biến môi trường được thay đổi từ ASPNETCORE_SERVER.URLS
đến ASPNETCORE_URLS
trong các phiên bản sau này của ASP.NET (xem ở đây tài liệu của ASP.NET Lõi 3.1).