Есть ли какие-то дополнительные требования для портирования UPNP / WCF? - PullRequest
0 голосов
/ 30 марта 2012

Я использую http://managedupnp.codeplex.com/ API, чтобы открыть порт с помощью UPNP на моем маршрутизаторе NetGear DG834g со следующим кодом ..

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 в конфигурации маршрутизатора. Я вижу, что порт прослушивается на моем локальном компьютере, и другие компьютеры в моей локальной сети могут подключаться к порту, однако с помощью онлайн-проверки порта он отображается как закрытый, даже если маршрутизатор сообщает, что он должен перенаправлять на правильный внутренний IP-адрес.

У кого-нибудь есть идеи или я что-то упускаю?

С наилучшими пожеланиями,

Кристофер Лич

1 Ответ

0 голосов
/ 08 апреля 2012

Да. Я выполнил восстановление заводских настроек на маршрутизаторе, включил UPnP, открыл узел службы и создал пересылку. Это сработало.

Даже Тередо решил выйти в интернет.

Приятно знать с точки зрения начинающих, что не всегда ваша ошибка кода (ваше понимание). Иногда это ваше оборудование.

Спасибо

Кристофер Лич

...