2013-02-13 11 views
7

Próbuję dodać nowe mapowanie statycznego portu w mojej aplikacji C#. Ponieważ moja aplikacja działa jako serwer i chcę jej słuchać na porcie 8000.Nie mogę dodać mapowania statycznego portu w mojej aplikacji C#

NATUPNPLib.UPnPNATClass upnpnat = new NATUPNPLib.UPnPNATClass(); 
NATUPNPLib.IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection; 
mappings.Add(8000, "TCP", 8000, "192.168.1.100", true, "Local Web Server"); 

ale to nie działa !, Wyjątkiem był następujący:

Odwołanie do obiektu nie ustawione instancja obiektu.

Czy ktoś może mi pomóc?

To co robię: http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT-Router-via-UPnP.aspx

+0

Co 'mappings'? Czy zainicjowałeś to? Tutaj wpisz pełny kod. –

+0

Byłby to dobry pomysł, aby opublikować więcej kodu. Typ obiektu to odwzorowania, na przykład. –

+0

@MuhamadSerawan Wklej swój kod w swoje pytanie. Nie jako komentarz .. –

Odpowiedz

3

Musisz ustawić mapowanie do nowej instancji:

Na przykład:

var mappings = new List<Mapping>(); 

Następnie można wywołać:

mappings.Add(8000, "TCP", 8000, "192.168.1.100", true, "Local Web Server"); 

Ze swojej edycji:

upnpnat.StaticPortMappingCollection; // this is your problem. 

Kolekcja wraca jako null. Dlatego nie możesz dodać do kolekcji.

Być może trzeba zrobić:

NATUPNPLib.IStaticPortMappingCollection mappings = new StaticPortMappingCollection(); 

Od komentarzu Codesleuth za:

Uważam, że odpowiedź jest, że jego router nie jest skonfigurowany jako brama UPnP, albo że ma Brak uprawnień. Kolekcja StaticPortMappingCollection ma wartość NULL, jeśli którykolwiek z tych przypadków jest prawdziwy. Sugeruję, abyś to zmienił w odpowiedzi, ponieważ i tak masz uzasadniony powód błędu. Sprawdzanie wartości null pierwszy jest jedynym sposobem radzenia sobie z błędem

+0

@Muhammed - sprawdź moją edycję –

+0

Wygląda na to, że jego kod powinien zadziałać. [Zobacz ten artykuł] (http://www.codeproject.com/Articles/110338/UpnpStat-List-and-Modify-Port-Mappings-on-your-UPn) – Codesleuth

+0

@ Kodeks - może być, ale błąd wskazuje, że kolekcja nie ma instancji. –

1

Bez więcej kodu bylibyśmy w stanie pomóc, ale jeśli wyjątek jest w wierszu, który podałeś, to znaczy, że mappings jest nieważna i nie jest ustawiona.

Sprawdź kod przed tą linią, aby sprawdzić, czy faktycznie tworzysz i ustawiasz zmienną mappings.

Zgodnie z komentarzem obiekt zwracany przez upnpnat.StaticPortMappingCollection ma wartość null. Sprawdź dokumentację, aby upewnić się, że poprawnie ją zainicjujesz.

1

Tylko na podstawie Twojego komunikatu o błędzie , który właśnie mamy;

var mappings = new List<Mapping>(); 
mappings.Add(8000, "TCP", 8000, "192.168.1.100", true, "Local Web Server"); 

Po edycji, może za pomocą podobnych;

NATUPNPLib.IStaticPortMappingCollection mappings = new StaticPortMappingCollection(); 

Wygląda na to zapomnij użyć ()

+0

To nie rozwiązało problemu. – Matth3w

Powiązane problemy