它们是否对UPNP / WCF移植有任何额外要求?

时间:2012-03-30 04:51:43

标签: c# wcf tcp port upnp

我使用http://managedupnp.codeplex.com/ API在我的NetGear DG834g ROUTER上使用UPNP打开一个端口,代码如下..

public void UPNPOpenPort(int port)
{
        Services lsServices;
        lsServices = Discovery.FindServices("urn:schemas-upnp-org:service:WANPPPConnection:1");

        if (lsServices.Count > 0)
            using (Service lsService = lsServices[0])
            {
                try
                {
                    object[] loObj = new object[] { "", port, "TCP", port, "10.0.0.100", true, "Custom Mapping", 0 };
                    lsService.InvokeAction("AddPortMapping", loObj);
                }
                catch (Exception loE)
                {
                    MessageBox.Show(
                        String.Format(
                            "{0}: HTTPSTATUS: {1}",
                            loE.Message,
                            lsService.LastTransportStatus));
                }


            }
        else
        {
            MessageBox.Show("Doh No Router Found");   
            return;
        }
}

我有一个带有NetTCP绑定的服务主机,同一个端口正在加载到子例程中以设置UPNP转发,我可以在路由器配置上看到活动的UPNP记录。我可以看到端口正在我的本地机器上监听,而我的局域网上的其他PC可以连接到端口但是使用在线端口检查器显示为关闭,即使路由器说它应该转发到正确的内部IP。 / p>

有没有人有任何想法或我错过了什么?

最诚挚的问候,

Christopher Leach

1 个答案:

答案 0 :(得分:0)

是。我在路由器上执行了工厂恢复,启用了UPnP,打开了服务主机并创建了转发。它奏效了。

甚至Teredo决定上网。

从初学者的角度来看,它并不总是你的代码(你的理解)错误。有时它是你的硬件。

谢谢,

Christopher Leach