无法在我的c#应用程序中添加静态端口映射
我正在尝试在我的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();
然后你可以打电话:
mappings.Add(8000, "TCP", 8000, "192.168.1.100", true, "Local Web Server");
从你的编辑:
upnpnat.StaticPortMappingCollection; // this is your problem.
该集合将返回null。 因此您无法添加到集合中。
你可能必须这样做:
NATUPNPLib.IStaticPortMappingCollection mappings = new StaticPortMappingCollection();
来自Codesleuth的评论:
我相信答案是他的路由器没有配置为UPnP网关,或者他没有权限。 如果其中任何一种情况为真,则StaticPortMappingCollection为null。 我建议您将此编辑到您的答案中,因为您仍然有正确的错误原因。 首先检查null是处理错误的唯一方法
如果没有更多代码,我们将能够提供帮助,但如果exception在您提供的行上,则意味着mappings
为空且未设置。
检查该行之前的代码,看看您是否实际创建并设置了mappings
变量。
根据你的评论, upnpnat.StaticPortMappingCollection
返回的对象是null。 检查文档以确保正确初始化它。
只是根据您的错误信息 ,我们所拥有的只是;
var mappings = new List(); mappings.Add(8000, "TCP", 8000, "192.168.1.100", true, "Local Web Server");
编辑后,也许使用喜欢;
NATUPNPLib.IStaticPortMappingCollection mappings = new StaticPortMappingCollection();
看起来你忘记使用()
上述就是C#学习教程:无法在我的c#应用程序中添加静态端口映射分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991959.html