我在IIS 7上部署了WCF服务,并支持启用非HTTP的
在一个项目中,我已经使用wsHttp
端点公开了8种不同的服务,这些服务正常工作。
我还希望为相同的服务公开NetNamedPipe
绑定。
我的示例NetNamedPipe
绑定。 。
<netNamedPipeBinding>
<binding name="PassportIPCBasicEndpoint"
closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00"
sendTimeout="00:05:00"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" transferMode="Buffered"
hostNameComparisonMode="Exact" >
<readerQuotas
maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
<security mode="Transport">
<transport protectionLevel="None" />
</security>
</binding>
</netNamedPipeBinding>
我的服务标签
<service behaviorConfiguration="default" name="MyAccountService.AccountService">
<host>
<baseAddresses>
<add baseAddress="http://localhost/MyAccountService/v1.0/AccountService.svc" />
</baseAddresses>
</host>
<endpoint name="PassportIPCBasicEndpoint"
address="net.pipe://localhost/MyAccountService/v1.0/AccountService.svc"
binding="netNamedPipeBinding"
bindingConfiguration="PassportIPCBasicEndpoint"
contract="MyAccountService.IAccountService"/>
</service>
这给了我以下例外:
不支持协议'net.pipe'。
[InvalidOperationException:不支持协议'net.pipe'。 System.ServiceModel.Activation.HostedTransportConfigurationManager.InternalGetConfiguration(字符串 方案)
[InvalidOperationException:ChannelDispatcher at 'net.pipe://localhost/MyAccountService/v1.0/AccountService.svc'与' 合同'“IAccountService”'无法打开它 IChannelListener。]
我在IIS中的高级网站设置中添加了http,net.pipe条目。
还通过控制面板设置安装并启用了对WCF服务的非HTTP支持。
在8个.svc服务中,只有一个这样的服务能够获取端口,我可以浏览它的.SVC端点为netnamedPipe绑定配置的所有其他服务都会给我上述错误。
有些人可以指导我,需要做些什么来让他们全部抓住港口并且可以进入。
答案 0 :(得分:3)
这个问题是在正确的位置启用协议。 以前我在网站级别启用了net.pipe协议。
在托管服务的每个虚拟路径上启用net.pipe协议后。 它奏效了。
答案 1 :(得分:0)
netNamedPipe
绑定仅用于同一台机器通信 - 您无法从远程计算机调用此类端点。
那是你想要做的吗?
netNamedPipe
绑定非常适合同一台机器上的应用程序内部通信 - 但实际上并非其他任何内容。