Warum kann ich keine Verbindung zu einem WCF-Dienst mit net.tcp aber ich mit http kann?

StackOverflow https://stackoverflow.com/questions/201004

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe einen WCF-Dienst mit einem Servicehost auf dem IIS ausgeführt wird. Es läuft gut mit dem WSHttpBinding aber wegen der Geschwindigkeit und alles auf dem gleichen Netzwerk sein (keine Firewalls) Ich möchte stattdessen die NetTcpBinding ein wenig beschleunigen Dinge verwenden.

Wenn ich versuche zu tun, dass ich diesen Fehler:

  

konnte nicht net.tcp verbinden: //zzz.xxx.yyy/MyService.svc. Der Verbindungsversuch dauerte eine Zeitspanne von 00: 00: 01,0464395. TCP-Fehlercode 10061: keine Verbindung hergestellt werden konnte, weil die Zielmaschine aktiv verweigert es x.x.x.x. 808

Ich verwende SecurityMode.None nur um sicher zu stellen, dass schraubt mich nicht auch habe ich versucht, eine dieser auf zwei verschiedenen Versuchen:

binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
binding.Security.Message.ClientCredentialType = TcpClientCredentialType.Windows;,

Auch soll ich darauf hinweisen, dass ich ziemlich lof von Daten von einem der Service-Anrufen bin ziehen, so dass ich auch diese (sowohl auf der http und die TCP-Versuche - MaxMessageSize bis 1000000 Einstellung)

binding.MaxReceivedMessageSize = maxMessageSize;
binding.ReaderQuotas.MaxArrayLength = maxMessageSize;

Es sollte ziemlich einfach sein, bekommen sie zu arbeiten, so etwas bin ich fehle?

UPDATE: Ich habe die TCP-Port 808 auf der Website Identität hinzugefügt und versuchte es erneut. Jetzt bekomme ich diese Fehlermeldung:

  

Sie haben versucht, einen Kanal zu einem Dienst zu erstellen, die .Net Framing nicht unterstützt. Es ist möglich, dass Sie einen HTTP-Endpunkt stoßen.

War es hilfreich?

Lösung

Check out dieser Beitrag zur Aktivierung von nicht-HTTP-Bindungen in IIS 7.0. Standardmäßig müssen Sie explizit in IIS ermöglichen net.tcp 7.0.

Hope, das hilft.

UPDATE:

Sehen Sie Ihren Kommentar - leider ist net.tcp nicht in IIS 6.0 unterstützt. Schauen Sie sich Link , die die unterstützten WCF-Bindungen für verschiedene Hosts Details (einschließlich Selbst Hosting, WAS und IIS). Sieht aus wie nur HTTP-Bindungen in IIS 6.0 arbeiten.

Andere Tipps

Wenn Sie Vista verwenden, dann sicher das WAS und Net.Tcp Listener Adapter Dienste ausgeführt werden.

Für alle, die quer durch das stolpert, mein Führer zu Fehlersuche net.tcp WCF Fragen wie diese:

  1. Überprüfen Sie, dass net.tcp ist ein aktiviertes Protokoll für die Website (in IIS, die Seite der rechten Maustaste, zur erweiterten Einstellungen, und stellen sicher, dass Aktivierte Protokolle enthält „net.tcp“
  2. Ich bin mir nicht sicher, ob dies eine Paranoia Sache ist, ich habe auch immer benötigt net.tcp für die Website über die Kommandozeile als Schritt 1. Öffnen Sie eine Eingabeaufforderung, und von c:\windows\system32\inetsrv auch zu aktivieren, geben Sie appcmd.exe set app "NameOfWebsite/" /enabledProtocols:http,net.tcp
  3. Überprüfen
  4. , dass die Bindungen für die Website in IIS haben einen Eintrag für net.tcp, und dass Sie haben es auf die richtige Portnummer gebunden (für mich, ich benutze 9000: * als meine Bindung an Port 9000). Überprüfen Sie auch, dass keine anderen Websites in IIS mit dem gleichen net.tcp an diesen Port Bindung
  5. Überprüfen
  6. , dass der "Net.TCP Listener Adapter" Dienst ausgeführt wird.

Fertig.

Sobald ich anfange Net.Tcp Listener-Adapter-Service, Service funktioniert gut für mich.

Könnte es etwas so einfaches wie Ihre Firewall-Regeln auf dem Service-Host sein disallowing Port 808?

überprüfen, ob IIS beiden Protokolle hat Hinweis auf gleiche Portnummer, ich finde nur, wenn dies der Fall ist, wird es nicht funktionieren.

Ich habe dieses Problem auch auf Windows Server 2008 R2

Einfach sicher, dass der Net.Tcp-Portfreigabedienst auch gestartet wird, da es eine Abhängigkeit des Net.Tcp Listener-Adapters ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top