Serwer + client + WCF + ruter = problem

0

Witam wszystkich.
Od pewnego czasu próbuje napisać małą aplikację, której zadaniem jest przesyłanie plików między serwerem i komputerami. Program mam już praktycznie skończony ale wszystko działa tylko na localhost'cie. Jeśli próbuje podłączyć się do hosta z innego komputera w sieci program odmawia posłuszeństwa, nawet gdy korzystam z innego komputera w sieci lokalnej (oczywiście host jest na odpalony na jednym komputerze a w programie klienta w app.config zmieniam adres localhost na IP komputera na którym jest odpalony host).
Oto moje pliki konfiguracyjne.
Host

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="RepositoryDirectory" value="storage"/>
  </appSettings>
  <system.serviceModel>
    <services>
      <service name="FileServer.Services.FileService">
        <endpoint binding="netTcpBinding"
					address="net.tcp://localhost:5000/FileService"
					contract="FileServer.Services.IFileService"
					bindingConfiguration="customTcpBinding" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:5000/FileService"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <netTcpBinding>
        <binding name="customTcpBinding" transferMode="Streamed" maxReceivedMessageSize="20480000" />
      </netTcpBinding>
    </bindings>
  </system.serviceModel>
</configuration>
 

Klient

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <client>
      <endpoint  name="FileService"
				address="net.tcp://localhost:5000/FileService"
				binding="netTcpBinding"
				contract="FileServer.Services.IFileService"
				bindingConfiguration="customTcpBinding" />
    </client>
    <bindings>
      <netTcpBinding>
        <binding name="customTcpBinding" maxReceivedMessageSize="20480000" transferMode="Streamed" />
      </netTcpBinding>
    </bindings>
  </system.serviceModel>
</configuration>

Czy ktoś może wie co mogę robić źle że nawet korzystając z komputera w sieci lokalnej komunikacja nie dochodzi do skutku?
Za wszelkie informację serdeczne dzięki

0

A dokładniej? Próbowałeś odpalić tylko serwer i np. telnet połączyć się na tym porcie i sprawdzić czy w ogóle nawiązuje się połączenie?

0

Nie, tak akurat nie próbowałem. Przyznam, że nawet o tym nie pomyślałem. Ogólnie robiłem tak, że aplikację hosta zawsze odpalam na jednym komputerze a aplikację kliencką na innym znajdującym się w sieci. I zawsze w takiej sytuacji połączenie nie zostaje nawiązane. Wyskakuje mi wyjątek: Serwer odrzucił poświadczenia klienta

0

Jak hostujesz część serwerową? własny plik exe (proces), usługa windows, IIS? Wyjątek wskazuje na problem z autentykacją klienta. Jak autentykujesz klientów? Masz w swojej sieci domenę?
Zobacz dwa ostatnie posty tutaj http://social.msdn.microsoft.com/Forums/en-SG/wcf/thread/1551b4e1-8e15-4da2-b155-d398379809b3
Albo masz na obu maszynach takie same konta, czy jawnie w kiencie podasz odpowiednie credentials. Albo zrezygnujesz z security.

0

Hostuje za pomocą pliku exe(console application). Co do pytania jak autentykuje klientów - to muszę napisać, że trochę nie wiem o co chodzi. Na razie zrezygnowałem z security. Co do domeny. No to nie mam własnej domeny. Mam neta z telewizji kablowej. Jest on rozdzielony na dwa kompy za pomocą routera w którym w DMZ wpisałem adres swojego komputera w sieci. W pliku app.config w kliencie wpisuje adres IP, który jest przed routerem(jest to stałe IP). Dodam, że jeśli ktoś pinguje ten IP z zewnątrz wszystko jest ok.
Dzięki w ogóle za zainteresowanie moim problemem

0

Dzięki wielkie za porady. Okazało się faktycznie, że nie miałem skonfugurowanego security i do tego doszły jeszcze różnice w app.config w kliencie i hoście. Wyczytałem, że w hoście i kliencie konieczne jest to aby kontrakty i bindingi były tak samo skonfigurowane bo inaczej właśnie występuje podobny błąd jak przy braku skonfigurowanego security

0

No jeśli chodzi o kontrakty to zdecydowanie muszą być takie same, w szczególności kontrakt musi być spójny. Co do binding'ów mogą występować pewne różnice, tzn. nie wszystkie elementy które definiuje klient definiuje serwer i odwrotnie.
W endpoint może występować element identity, on również powinien być spójny (po szczegóły odsyłam do dokumentacji http://msdn.microsoft.com/en-us/library/ms733130.aspx)

1 użytkowników online, w tym zalogowanych: 0, gości: 1