Вот пример использования NatDiscovers отсюда https://csharp.hotexamples.com/en/examples/Open.Nat/NatDiscoverer/-/php-natdiscoverer-class-examples.html
public void OpenExternalPort(int privatePort, int publicPort, string description)
{
localHostPort = privatePort;
var timeSpan = new TimeSpan(0, 0, 0, 30);
var cancellationTokenSource = new CancellationTokenSource(timeSpan);
natDiscoverer = new NatDiscoverer();
natDevice = natDiscoverer
.DiscoverDeviceAsync(PortMapper.Upnp, cancellationTokenSource)
.IsCompleted();
mapping = new Mapping(Protocol.Tcp, privatePort, publicPort, description);
natDevice
.CreatePortMapAsync(mapping)
.IsCompleted();
}
Это похоже на пример кода (но new Mapping(Protocol.Tcp, privatePort, publicPort, description);
не содержит еще один ноль, например в вашем коде).
Итак, вы действительно понимаете проблему? Может быть, вам не нужна карта портов? Или, может быть, у вас есть проблемы в других частях системы (например, брандмауэр)? Как вы понимаете, что ваш код не работает?