我正在尝试在我的 C# 应用程序中添加新的静态端口映射。因为我的应用程序作为服务器运行,并且我希望它侦听端口 8000。
NATUPNPLib.UPnPNATClass upnpnat = new NATUPNPLib.UPnPNATClass();
NATUPNPLib.IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection;
mappings.Add(8000, "TCP", 8000, "192.168.1.100", true, "Local Web Server");
但它不起作用!,例外情况如下:
你调用的对象是空的。
有人可以帮助我吗?
这就是我正在做的:http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT-Router-via-UPnP.aspx
您需要设置到新实例的映射:
例如:
var mappings = new List<Mapping>();
然后你可以调用:
mappings.Add(8000, "TCP", 8000, "192.168.1.100", true, "Local Web Server");
根据您的编辑:
upnpnat.StaticPortMappingCollection; // this is your problem.
该集合返回为空。因此您无法添加到集合中。
你可能需要这样做:
NATUPNPLib.IStaticPortMappingCollection mappings = new StaticPortMappingCollection();
来自 Codesleuth 的评论:
我相信答案是他的路由器没有配置为 UPnP 网关,或者他没有权限。如果这两种情况之一为 true,则 StaticPortMappingCollection 为 null。我建议您将其编辑到您的答案中,因为无论如何您已经找到了错误的正确原因。首先检查 null 是处理错误的唯一方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)