Vom WCF-Testclient aus kann nicht auf den Net TCP-Dienst zugegriffen werden

Ich versuche, zwei WCF-Dienste in IIS auszuführen, wobei einer ein Webdienst und einer ein Net TCP-Bindungsdienst ist.

Hier ist ein Simulcrum meiner Web.config (ich habe den Dienstnamen anonymisiert):

<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>

Wenn ich dies in der IDE ausführe, wird eine Seite geöffnet, die auf Port 51953 ausgeführt wird, und ich kann die WSDL für den Webservice abrufen, indem ich zu navigierehttp: // localhost: 51953 / WebService.svc? wsdl (Beachten Sie, dass der Port anders ist). Ich kann die WSDL scheinbar nicht abrufen, indem ich auf den in der webconfig-Datei (8523) angegebenen Port wechsle.

Wenn ich die WcfTestClient-App auf "net.tcp: // localhost: 8523 / ServerService" zeige und die Fehlermeldung angezeigt wird, dass kein Zugriff auf die Metadaten möglich ist, die ich konfiguriert habe (die zweite) Endpunkt im Dienst).

Was mache ich hier falsch?

AKTUALISIEREN:

Ich habe versucht, die Portnummer in den Projekteigenschaften auf 8523 zu ändern, da dies anscheinend nicht funktioniert hat. Ich habe auch versucht, die Adresse des mex-Endpunkts in "ServerService \ mex" zu ändern, aber der Testclient hat einige Zeit damit verbracht, Änderungen vorzunehmen dann warf es den folgenden Fehler:

Fehler: Metadaten können nicht von net.tcp: // localhost: 8523 / ServerService abgerufen werden. Wenn es sich um einen Windows Communication Foundation-Dienst handelt, auf den Sie Zugriff haben, überprüfen Sie, ob Sie die Veröffentlichung von Metadaten unter der angegebenen Adresse aktiviert haben. Weitere Informationen zum Aktivieren der Veröffentlichung von Metadaten finden Sie in der MSDN-Dokumentation unterhttp://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange-Fehler-URI: net.tcp: // localhost: 8523 / ServerService Die Metadaten enthalten einen Verweis, der nicht aufgelöst werden kann: 'net.tcp: // localhost: 8523 / ServerService'. Sie haben versucht, einen Kanal für einen Dienst zu erstellen, der .NET Framing nicht unterstützt. Möglicherweise stoßen Sie auf einen HTTP-Endpunkt. Erwarteter Datensatztyp 'PreambleAck', gefunden '72'.

Ich werde weiter graben, aber ich würde mich über jede Hilfe freuen.

UPDATE 2:

Ich habe den Endpunkt mex in mexTcpBinding geändert: Hier ist die Service-Tag-Nummer:

<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>

Immer noch kein Glück. Nur um sicherzugehen, dass ich die richtige URL in den Tester eingebe, lautet die von mir verwendete URL:

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

Ich habe auch versucht:

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

und

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

All das gibt mir eine Variation des folgenden Fehlers:

Fehler: Metadaten können nicht von net.tcp: // localhost: 8523 / ServerService abgerufen werden. Wenn es sich um einen Windows Communication Foundation-Dienst handelt, auf den Sie Zugriff haben, überprüfen Sie, ob Sie die Veröffentlichung von Metadaten unter der angegebenen Adresse aktiviert haben. Weitere Informationen zum Aktivieren der Veröffentlichung von Metadaten finden Sie in der MSDN-Dokumentation unterhttp://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange-Fehler-URI: net.tcp: // localhost: 8523 / ServerService Die Metadaten enthalten einen Verweis, der nicht aufgelöst werden kann: 'net.tcp: // localhost: 8523 / ServerService'. Sie haben versucht, einen Kanal für einen Dienst zu erstellen, der .NET Framing nicht unterstützt. Möglicherweise stoßen Sie auf einen HTTP-Endpunkt. Erwarteter Datensatztyp 'PreambleAck', gefunden '72'.

UPDATE 3

FWIW Ich denke, es könnte ein größeres Problem mit meiner WEb.config geben:

<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>

Ich kann zum Webservice navigieren und so kann ich die WSDL mithilfe von? Wsdl abrufen, aber wenn ich die Adresse hinzufügehttp: // localhost: 8523 / MyWebService in den WCF-Tester wirft es auch einen Fehler.

Fehler: Von können keine Metadaten abgerufen werdenhttp: // localhost: 8523 / MyWebService Wenn es sich um einen Windows Communication Foundation-Dienst handelt, auf den Sie zugreifen können, überprüfen Sie, ob Sie die Veröffentlichung von Metadaten an der angegebenen Adresse aktiviert haben. Weitere Informationen zum Aktivieren der Veröffentlichung von Metadaten finden Sie in der MSDN-Dokumentation unterhttp://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange-Fehler-URI:http: // localhost: 8523 / MyWebService Metadaten enthalten einen Verweis, der nicht aufgelöst werden kann: 'http: // localhost: 8523 / MyWebService'. Beim Empfang der HTTP-Antwort auf ist ein Fehler aufgetretenhttp: // localhost: 8523 / MyWebService. Dies kann daran liegen, dass die Service-Endpunktbindung das HTTP-Protokoll nicht verwendet. Dies kann auch daran liegen, dass ein HTTP-Anforderungskontext vom Server abgebrochen wird (möglicherweise aufgrund des Herunterfahrens des Dienstes). Weitere Informationen finden Sie in den Serverprotokollen. Die zugrunde liegende Verbindung wurde geschlossen: Bei einem Empfang ist ein unerwarteter Fehler aufgetreten. Daten von der Transportverbindung können nicht gelesen werden: Eine vorhandene Verbindung wurde vom Remote-Host zwangsweise geschlossen. Eine bestehende Verbindung wurde vom Remote-HostHTTP-GET-Fehler-URI zwangsweise geschlossen:http: // localhost: 8523 / MyWebService Beim Herunterladen von 'http: // localhost: 8523 / MyWebService' ist ein Fehler aufgetreten. Die Anforderung schlug mit dem HTTP-Status 404 fehl: Nicht gefunden.

Ich denke, das Problem hat entweder etwas mit Pfaden zu tun oder ich füge nur die falsche URL in die Testanwendung ein. Entweder das oder ich habe die Metadaten immer noch nicht richtig konfiguriert.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage