web-dev-qa-db-ja.com

net.tcpでWCFサービスに接続できないのに、httpで接続できないのはなぜですか?

IISでServiceHostFactoryを使用してWCFサービスを実行しています。WSHttpBindingで問題なく実行されていますが、速度とすべてが同じネットワーク上にあるため(ファイアウォールなし)、速度を上げたいと思います。代わりにNetTcpBindingを使用しています。

私がそうしようとすると、このエラーが発生します:

Net.tcp://zzz.xxx.yyy/MyService.svcに接続できませんでした。接続の試行は、00:00:01.0464395の期間継続しました。 TCPエラーコード10061:ターゲットマシンがx.x.x.x:808をアクティブに拒否したため、接続を確立できませんでした。

私はSecurityMode.Noneを使用していますが、それが私を台無しにしていないことを確認するために、私は2つの異なる試みでこれらのいずれかを試しました:

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

また、サービスコールの1つからかなりの量のデータを取得していることを指摘する必要があるため、これらも配置します(httpとtcpの両方の試行-maxMessageSizeを1000000に設定)

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

それを機能させるのはかなり簡単なはずなので、何が欠けていますか?

更新:TCPポート808をWebサイトIDに追加して再試行しました。今度はこのエラーが発生します:

.Net Framingをサポートしないサービスへのチャネルを作成しようとしました。 HTTPエンドポイントが発生している可能性があります。

IIS 7.0での非HTTPバインディングの有効化に関する この投稿 を確認してください。デフォルトでは、IIS 7.0でnet.tcpを明示的に有効にする必要があります。

お役に立てれば。

更新:

コメントを見ました-残念ながら、net.tcpはIIS 6.0ではサポートされていません。さまざまなホスト(セルフホスティング、WAS、IISを含む)でサポートされているWCFバインディングについて詳しく説明している このリンク を確認してください。 IIS 6.0ではHTTPバインディングのみが機能するようです。

15
David Mohundro

Vistaを使用している場合は、WASおよびNet.Tcpリスナーアダプタサービスが実行されていることを確認してください。

23
Vinny

これに遭遇した人のために、次のようなnet.tcp WCF問題のトラブルシューティングのガイド:

  1. Net.tcpがWebサイトの有効なプロトコルであることを確認します(IISでは、サイトを右クリックして詳細設定に移動し、有効なプロトコルに "net.tcp"が含まれていることを確認します
  2. これがパラノイアであるかどうかはわかりませんが、ステップ1と同様に、コマンドラインからサイトのnet.tcpを常に有効にする必要もありました。コマンドプロンプトを開き、c:\windows\system32\inetsrv、 入る appcmd.exe set app "NameOfWebsite/" /enabledProtocols:http,net.tcp
  3. IISのWebサイトのバインディングにnet.tcpのエントリがあり、正しいポート番号にバインドしていることを確認します(私にとっては、バインディングとして9000:*を使用しています)ポート9000へ)IIS内の他のWebサイトがそのポートへの同じnet.tcpバインディングを使用していないことも確認します
  4. 「Net.TCP Listener Adapter」サービスが実行されていることを確認します。

できました。

15
Matt Roberts

Net.Tcpリスナーアダプターサービスを開始すると、サービスは正常に機能します。

7
rosi

ポート808を許可しないサービスホストのファイアウォールルールと同じくらい簡単なものですか?

1
ZombieSheep

Window Server 2008 R2でもこの問題が発生していました

Net.Tcpリスナーアダプターの依存関係であるため、Net.Tcpポート共有サービスも開始されていることを確認してください。

1

IISが両方のプロトコルが同じポート番号を指しているかどうかを確認します。そうである場合、私はちょうど見つけました、それは機能しません。

1
amitdotchauhan