Co zrobić aby WCF działał między dwoma komputerami w sieci?

Odpowiedz Nowy wątek
2011-10-16 14:38
0

Dla wielu którzy mieli do czynienia z WCF pytanie może wydać się banalne, ale ja nie mogę tego przejść :/

Mianowicie: Mam dwa komputery w jednej sieci lokalnej. Jeden widzi drugiego i odwrotnie. Na jednym mam zainstalowaną usługę windows, która hostuje serwis WCF poprzez binding netTCP (ponieżej kod z konfiguracji na serwerze):


        <binding name="BufferedNetTcpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
          <security mode="Transport">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"/>
          </security>
        </binding>

...

      <service behaviorConfiguration="WcfServices.EmailBehavior" name="MyProgram.WcfServices.Email.Email">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration="StreamedNetTcpBinding" contract="MyProgram.WcfServices.Email.IEmail">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://192.168.2.101:8523/Email"/>
          </baseAddresses>
        </host>
      </service>

...

        <behavior name="WcfServices.EmailBehavior">
          <serviceMetadata httpGetEnabled="False"/>
          <serviceDebug includeExceptionDetailInFaults="True"/>
        </behavior>

Jak widać podaje adres komputera w sieci lokalnej: <add baseaddress="net.tcp://192.168.2.101:8523/Email" />
Drugi komputer: Stworzyłem program , który ma korzystać z tego serwisu. Jednak nie może się z nim połączyć przez błąd:

Nie można nawiązać połączenia ponieważ komputer docelowy aktywnie go odmawia 127.0.0.1:8523

Oto konfiguracja klienta:

                <binding name="NetTcpBinding_IEmail" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:30:00"
                    transactionFlow="false" transferMode="Streamed" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                    maxReceivedMessageSize="2147483647">
                    <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                        maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="None">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                        <message clientCredentialType="Windows" />
                    </security>
                </binding>

...

            <endpoint address="net.tcp://192.168.2.101:8523/Email" binding="netTcpBinding"
                bindingConfiguration="NetTcpBinding_IEmail" contract="ServiceEmail.IEmail"
                name="NetTcpBinding_IEmail">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>

Co mam zrobić, aby korzystać z usługi na innym komputerze w sieci ? Coś z uwierzytelnianiem ? Coś z ustawieniem samego windows ? firewall ? Nie wiem.. co jeszcze może być źle :/

edytowany 2x, ostatnio: now77ak, 2011-10-16 14:52

Pozostało 580 znaków

2011-10-16 16:33

Odpowiedź, doszedłem już do rozwiązania. Konieczne jest odblokowanie portu. Sorry za zamieszanie.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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