私は、netTcpBindingを使用して非常に単純なHelloWorldのようなwcfサービスをホストするために、まったく成功せずに1週間以上試みてきました。
httpを使用すると、すべてがOKです。リモートマシンからでもサービスにアクセスできます。しかし、tcpでは問題が発生します。
WASでサービスをホストするために、想定されているすべての手順を実行しました。
httpおよびhttp以外のアクティベーションを含む.Net3.0機能が有効になっている
「ネットワークサービス」と「IIS_IUSRS」に、サイトを含むフォルダーに次のアクセス許可を付与しました。
- 読み取りと実行
- フォルダの内容を一覧表示
- 読む
ファイアウォールでポート8100および8086を開きました。
IISマネージャー/アクション/バインディングでは、次のバインディングが設定されています。
- http 8100:*
- net.tcp 8086:*
IISマネージャー/Webサイトの管理/詳細設定で、httpプロトコルとnet.tcpプロトコルの両方が有効になっています。
私が抱えていた元々の問題は、http経由でサービスにアクセスできたということでしたが、tcpを試してみると、次のエラーが発生しました。
「エンドポイントアドレス'net.tcp://myDomain/HelloWorld.Hello.svc'のサービスがプロトコルアドレスで使用できないため、メッセージをディスパッチできませんでした。」
このサイトで、作成者が同じ問題を抱えている投稿を見つけました。これは、.net3.0の機能を再インストールすることで解決しました。だから私はそれを試しました。また、念のため、IIS7.0を再インストールしようとしました。今、状況は当初よりも悪化しています。Web.ConfigでtcpBindingを使用してエンドポイントを構成すると、IEを使用してそのhttpアドレスでサービスに到達することさえできません。次のメッセージが表示されます。
NetTcpBindingをバインドしているエンドポイントのスキームnet.tcpに一致するベースアドレスが見つかりませんでした。登録されているベースアドレススキームは[http]です。
Web.Configファイルは次のとおりです。
name="HelloWorld.Hello">
<host>
<baseAddresses>
<add baseAddress="http://myDomain:8100/HelloWorld/" />
<add baseAddress="net.tcp://myDomain:8086/HelloWorld/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
contract="HelloWorld.IHello"
bindingConfiguration="httpInseguro">
</endpoint>
<endpoint address=""
binding="netTcpBinding"
contract="HelloWorld.IHello"
bindingConfiguration="netTcpInseguro">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name ="httpInseguro">
<security mode ="None" />
</binding>
</wsHttpBinding>
<netTcpBinding>
<binding name ="netTcpInseguro">
<security mode ="None" />
</binding>
</netTcpBinding>
</bindings>
.svcファイルは次のようになります。
誰かが私に何が起こっているのかについての手がかりを教えてもらえますか?私は本当に他に何をすべきかわかりません。httpバインディングを使用することはオプションではないため、これは本当の問題です。前もって感謝します。