首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# -用.Net内核进行端口映射

C# -用.Net内核进行端口映射
EN

Stack Overflow用户
提问于 2021-08-19 06:40:28
回答 1查看 570关注 0票数 1

预期结果

我正在尝试使用Kestrel制作一个ASP.NET Core5.0应用程序,我想将服务器端口自动移植。

套餐

我目前正在使用OpenNat.Core包。我也尝试过常规的OpenNat,也出现了同样的问题。

问题

当端口转发时,程序说它已经正确地映射了所有的东西,而地图甚至在列出我的路由器上所有映射的端口时显示。然而,当我试图通过CanYouSeeMe.org查看它的状态时,它会返回一个超时错误,并且无法访问网络之外的服务器。

我试过的

  1. 我认为端口映射可能是在服务器启动后打开的,所以我手动打开端口,然后重新启动Kestrel服务器。
  2. 我确保我的路由器支持UPnP
    • 我也有一个语法NAS,我从前移植,它工作得很好。

  3. 我有个朋友用ZenMap检查端口。
    • 端口显示它已被过滤,但没有打开(没有指定任何服务)。

代码

代码语言:javascript
复制
using Open.Nat;
using System;
using System.Threading;
using System.Threading.Tasks;
...
        public static async Task OpenPort(int port, string description)
        {
            try
            {
                
                NatDiscoverer discoverer = new NatDiscoverer();
                CancellationTokenSource cts = new CancellationTokenSource(10000);
                NatDevice device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts);
                Mapping map = new(Protocol.Tcp, port, port, description);
                await device.CreatePortMapAsync(map);
                Console.WriteLine($"Created {map}");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-20 04:15:10

不用担心我的防火墙挡住了应用程序。我能够动态地添加防火墙规则来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68843127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档