Как использовать Open.NAT в веб-API ASP. NET? - PullRequest
0 голосов
/ 27 мая 2020

Проблема

Я пишу небольшое приложение веб-службы, используя ASP. NET. Я хочу, чтобы этот веб-API был виден извне домашней сети (за NAT). Проблема в том, что пользователь, для которого я пишу эту программу, не имеет доступа к изменению своего маршрутизатора. Создание правила переадресации портов в конфигурации маршрутизатора невозможно.

В качестве решения этой проблемы я попытался использовать UPNP с платформой Open.NAT . К сожалению, я не могу заставить это работать. Я могу создать правило, я вижу, что порт открыт с помощью онлайн-инструментов, таких как canyouseeme , но я не могу подключиться к веб-API с помощью браузера. Я на 100% уверен, что UPNP включен на моем маршрутизаторе.

Код

Код, который я сейчас использую, является кодом прогноза погоды по умолчанию, который создается Visual Studio при создании ASP . NET веб-API. Я добавил Open.NAT из диспетчера пакетов NuGet.

Затем я изменил код по умолчанию на следующий

public static void Main(string[] args)
{
    CreatePortforwardRule().Wait();
    CreateHostBuilder(args).Build().Run();
}

static async Task CreatePortforwardRule()
{
    NatDiscoverer discoverer = new NatDiscoverer();
    CancellationTokenSource cts = new CancellationTokenSource(10000);
    var device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts);
    await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 5000, 7856, "Test"));
}

при запуске этого приложения и go на canyouseeme , я получаю информацию, как показано на этом изображении, но я не могу подключиться к веб-API с помощью браузера. (Также пытался подключиться с помощью cURL без результата)

Дополнительные действия, которые я сделал

Чтобы попытаться решить эту проблему, я также сделал следующее:

  • Изменено порт, на котором должно работать приложение, на 5000
  • В мой P C добавлено правило брандмауэра, которое разрешает входящий трафик c на порт 5000
  • В качестве проверки работоспособности я также попробовал перенаправление портов вручную на моем собственном маршрутизаторе, который работал, но, как я уже говорил, это не вариант для пользователя, который собирается использовать программу.

Я очень надеюсь, что смогу найти решение. Спасибо, что нашли время прочитать мой вопрос.

Ссылка на выпуск в репозитории Open.NAT: https://github.com/lontivero/Open.NAT/issues/97

...