WSL2 не может получить доступ к веб-приложению на локальном сервере Kestrel на ПК

#asp.net-core #curl #wsl-2 #kestrel

#asp.net-core #curl #wsl-2 #kestrel

Вопрос:

На моем локальном хосте ПК (Win10). Я начинаю asp.net базовое веб-приложение в Kestrel и port — 8081.

Я хочу использовать команду curl в wsl2 для тестирования веб-приложения, и я обнаружил проблему.

На моем КОМПЬЮТЕРЕ работает следующий URL-адрес.

 curl http://localhost:8081/hello    (working) 
curl http://127.0.0.1:8081/hello    (working) 
curl http://192.168.43.216:8081/hello  (working)
curl http://172.25.208.1:8081/hello  (working)
 

В wsl2 я использую команду curl, но не работает нормально.

 curl http://192.168.43.216:8081/hello   (not working)
curl http://172.25.208.1:8081/hello     (not working)
 

Сетевая карта локального хоста моего ПК

 Wifi
IPv4: 192.168.43.216
submask: 255.255.255.0
gatway: 192.168.43.1

vEthernet (WSL)
IPv4: 172.25.208.1
submask: 255.255.240.0
gatway:
 

Вот мой asp.net основные настройки веб-api.

 launchSettings.json 
"PrometheusCoreTest": {
  "commandName": "Project",
  "launchBrowser": true,  
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  },
  "applicationUrl": "http://0.0.0.0:8081"  
}
 

Контроллер веб-api

 [ApiController]
public class TestController
{
    [HttpGet("/hello")]
    public string Hello()
    {
        return "hello, world";
    }
}
 

Я использую netstat для поиска порта 8081 и настраиваю брандмауэр на разрешение порта 8081.

 C:WINDOWSsystem32>netstat -ano | find "8081"
TCP    0.0.0.0:8081           0.0.0.0:0              LISTENING       22092
TCP    [::1]:2184             [::1]:8081             SYN_SENT        22972
 

Но результат curl http://192.168.43.216:8081/hello в wsl2 все еще не работает.

Как я могу получить доступ к веб-приложению localhost с помощью wsl2? Я пропустил некоторые настройки?

Ответ №1:


ОК. Наконец я нахожу проблему.

Используйте telnet для проверки порта с помощью wsl2. (Он не работает.)

 > telnet 192.168.43.216 8081
Trying 192.168.43.216...
 

Я обнаружил, что брандмауэр Visual Studio project заблокирован. Я не знаю, почему проект vs заблокирован…
введите описание изображения здесь

Просто остановите заблокированное правило и повторите попытку telnet, чтобы проверить, работает ли порт нормально.

 ❯ telnet 192.168.43.216 8081
Trying 192.168.43.216...
Connected to 192.168.43.216.
Escape character is '^]'.
 

Использование команды curl тоже работает нормально.

 ❯ curl http://192.168.43.216:8081/hello
hello, world%