Nie można uzyskać dostępu do usługi Net TCP Od klienta testowego WCF

Usiłuję uruchomić dwie usługi WCF z poziomu IIS jeden jest usługą internetową, a jeden jest usługą wiążącą Net TCP.

Oto podobieństwo mojego Web.config (anonimizowałem nazwę usługi):

<code><?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="ServerService">
        <endpoint address="ServerService" 
                  binding="netTcpBinding" 
                  bindingConfiguration="" 
                  name="NetTcpEndPoint" 
                  contract="IServerService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8523/"/>
            <add baseAddress="htt://localhost:8523/"/>
          </baseAddresses>
        </host>
      </service>

      <service name="MyWebService">
        <endpoint address=""
                  binding="wsHttpBinding"
                  bindingConfiguration=""
                  name="AACCWSEndPoint"
                  contract="IMyWebService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8523/IMyWebService"/>
          </baseAddresses>
        </host>
      </service>

    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>
</code>

Gdy uruchomię to w IDE, otwiera stronę działającą na porcie 51953 i mogę uzyskać WSDL dla usługi internetowej, przechodząc dohttp: // localhost: 51953 / WebService.svc? wsdl (Uwaga port jest inny). Wydaje mi się, że nie mogę pobrać WSDL, zmieniając port na portowy określony w pliku webconfig (8523).

Kiedy wskazuję aplikację WcfTestClient na „net.tcp: // localhost: 8523 / ServerService i pojawia się błąd mówiący, że nie można uzyskać dostępu do metadanych, które, o ile widzę, skonfigurowałem (drugi punkt końcowy usługi).

Co ja tu robię źle?

AKTUALIZACJA:

Próbowałem zmienić numer portu we właściwościach projektu na 8523 zgodnie z sugestią, który nie działał, próbowałem też zmienić adres punktu końcowego mex na „ServerService mex”, a klient testowy spędził trochę czasu, ale następnie rzucił następujący błąd:

Błąd: Nie można uzyskać metadanych z net.tcp: // localhost: 8523 / ServerService Jeśli jest to usługa Windows (R) Communication Foundation, do której masz dostęp, sprawdź, czy masz włączone publikowanie metadanych pod określonym adresem. Aby uzyskać pomoc dotyczącą publikowania metadanych, zapoznaj się z dokumentacją MSDN pod adresemhttp://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata URI błędu wymiany: net.tcp: // localhost: 8523 / ServerService Metadane zawierają odwołanie, którego nie można rozwiązać: „net.tcp: // localhost: 8523 / ServerService”. Próbowałeś utworzyć kanał do usługi, która nie obsługuje ramek .Net. Możliwe, że napotkasz punkt końcowy HTTP. Oczekiwany typ rekordu „PreambleAck”, znaleziono „72”.

Będę nadal kopał, ale będę wdzięczny za każdą pomoc.

AKTUALIZACJA 2:

Zmieniłem punkt końcowy mex na mexTcpBinding: Oto znacznik usługi:

<code>    <endpoint address="ServerServiceWS"
              binding="wsHttpBinding"
              bindingConfiguration=""
              name="WSEndPoint"
              contract="IServerService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex"
              binding="mexTcpBinding"
              contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:8523/"/>
        <add baseAddress="http://localhost:8523/"/>
      </baseAddresses>
    </host>
  </service>
</code>

Wciąż nie ma szczęścia. Aby upewnić się, że wprowadzam poprawny adres URL do testera, używam adresu URL:

<code>net.tcp://localhost:8523/ServerService
</code>

Próbowałem też:

<code>net.tcp://localhost:8523/mex
</code>

i

<code>net.tcp://localhost:8523/
</code>

Wszystko to daje mi pewną odmianę następującego błędu:

Błąd: Nie można uzyskać metadanych z net.tcp: // localhost: 8523 / ServerService Jeśli jest to usługa Windows (R) Communication Foundation, do której masz dostęp, sprawdź, czy masz włączone publikowanie metadanych pod określonym adresem. Aby uzyskać pomoc dotyczącą publikowania metadanych, zapoznaj się z dokumentacją MSDN pod adresemhttp://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata URI błędu wymiany: net.tcp: // localhost: 8523 / ServerService Metadane zawierają odwołanie, którego nie można rozwiązać: „net.tcp: // localhost: 8523 / ServerService”. Próbowałeś utworzyć kanał do usługi, która nie obsługuje ramek .Net. Możliwe, że napotkasz punkt końcowy HTTP. Oczekiwany typ rekordu „PreambleAck”, znaleziono „72”.

AKTUALIZACJA 3

FWIW Myślę, że może być większy problem z moim WEb.config Oto, jak wygląda obecnie:

<code><?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="ServerService">
        <endpoint address="" 
                  binding="netTcpBinding" 
                  bindingConfiguration="DefaultBindingConfig" 
                  name="NetTcpEndPoint" 
                  contract="IServerService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>

        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" 
                  bindingConfiguration="mexBinding"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8523/"/>
          </baseAddresses>
        </host>
      </service>

      <service name="MyWebService">
        <endpoint address=""
                  binding="wsHttpBinding"
                  bindingConfiguration=""
                  name="MyWSEndPoint"
                  contract="IMyWebService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange"
                  bindingConfiguration="mexHttpBinding"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8523/MyWebService"/>
          </baseAddresses>
        </host>
      </service>

    </services>
    <bindings>
      <netTcpBinding>
        <binding name="DefaultBindingConfig"
                 maxConnections="5"
                 portSharingEnabled="true" >
        </binding>
        <binding name="mexBinding"
                 portSharingEnabled="true">
          <security mode="None"></security>
        </binding>
      </netTcpBinding>
      <mexTcpBinding>
        <binding name="mexTcpBinding"/>
      </mexTcpBinding>
      <mexHttpBinding>
        <binding name="mexHttpBinding"/>
      </mexHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServerServiceBehaviour">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
        <behavior name="MexBehaviour">
          <serviceMetadata httpGetEnabled="true" policyVersion="Policy15"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>
</code>

Mogę przejść do usługi Webservice, która pozwala mi uzyskać WSDL przy użyciu? Wsdl, ale jeśli umieściłem Adddresshttp: // localhost: 8523 / MyWebService do testera WCF również rzuca błąd.

Błąd: nie można uzyskać metadanych zhttp: // localhost: 8523 / MyWebService Jeśli jest to usługa Windows (R) Communication Foundation, do której masz dostęp, sprawdź, czy masz włączone publikowanie metadanych pod określonym adresem. Aby uzyskać pomoc dotyczącą publikowania metadanych, zapoznaj się z dokumentacją MSDN pod adresemhttp://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata URI błędu wymiany:http: // localhost: 8523 / MyWebService Metadane zawierają odniesienie, którego nie można rozwiązać: „http: // localhost: 8523 / MyWebService”. Wystąpił błąd podczas odbierania odpowiedzi HTTP na adreshttp: // localhost: 8523 / MyWebService. Może to wynikać z powiązania punktu końcowego usługi bez użycia protokołu HTTP. Może to być również spowodowane przerwaniem kontekstu żądania HTTP przez serwer (prawdopodobnie z powodu zamknięcia usługi). Zobacz dzienniki serwera, aby uzyskać więcej informacji. Podstawowe połączenie zostało zamknięte: wystąpił nieoczekiwany błąd w odbiorze. Nie można odczytać danych z połączenia transportowego: istniejące połączenie zostało przymusowo zamknięte przez zdalnego hosta. Istniejące połączenie zostało przymusowo zamknięte przez zdalny identyfikator URI błędu hostHTTP GET:http: // localhost: 8523 / MyWebService Podczas pobierania pliku „http: // localhost: 8523 / MyWebService” wystąpił błąd. Żądanie nie powiodło się ze statusem HTTP 404: Nie znaleziono.

Myślę, że problem dotyczy albo ścieżek, albo po prostu umieszczam niewłaściwy adres URL w aplikacji testowej. Albo to, albo nadal nie skonfigurowałem poprawnie metadanych.

questionAnswers(3)

yourAnswerToTheQuestion