Я использую VS 2015 Update3. У меня есть ASP.NET Web API ядра со следующим кодом Program.csИспользует ли VS 2015 Kestrel?
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://*:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
Тогда в VS я настроил IIS Express для запуска на порт 40000
Это как launchSettings.json выглядит
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:40000/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/workunit",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Api": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "http://localhost:5000/api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Затем я нажимаю F5 для запуска приложения с помощью Visual Studio. Когда я делаю запрос API, я получаю результат, поэтому все работает нормально.
В Program.cs у меня есть .UseIISIntegration()
. Таким образом, я был под впечатлением, когда запрос поступает в IIS express, он просто передает этот запрос Kestrel. Итак, я думал, что IIS Express и Kestrel должны работать одновременно на двух разных портах.
Однако, когда я запустил команду netstat -ab
, я заметил, что IIS express работает на порте 40000, как ожидалось, но ничего не работает на порту 5000
. Фактически только для проверки я изменил порт IIS Express также на 5000
, и он отлично работал. Я ожидал конфликта между IIS Express и Kestrel, но этого не произошло.
Вопрос в том, что VS 2015 использует Kestrel вообще?