我在IIS7上托管了两个不同的WCF服务。一种是配置为在namedpipe上运行的数据库服务。托管在同一台机器上的其他服务是通过命名管道访问第一个服务,并配置为在webhttp上运行。
然而,当我从另一个服务调用数据库服务时,我收到以下错误
"没有端点正在" net.pipe:// localhost / iSPYDBService"那可以接受这个消息。这通常是由错误的地址或SOAP操作引起的。有关详细信息,请参阅InnerException(如果存在)。"
数据库服务配置文件代码段
<system.serviceModel>
<services>
<service name="DBService.Service">
<endpoint address="net.pipe://localhost/iSPYDBService"
binding="netNamedPipeBinding"
contract="DBService.Contracts.IDBService"
bindingConfiguration="Binding1" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="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>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<bindings>
<netNamedPipeBinding>
<binding name="Binding1"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
transactionFlow="false"
transferMode="Buffered"
maxBufferPoolSize="524288"
maxBufferSize="65536"
maxConnections="10"
maxReceivedMessageSize="65536">
<security mode="Transport">
<transport protectionLevel="EncryptAndSign" />
</security>
</binding>
</netNamedPipeBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
其他服务通过命名管道调用数据库服务会抛出错误,如上所述。
ChannelFactory<DBService.Contracts.IDBService> pipeFactory =
new ChannelFactory<DBService.Contracts.IDBService>(
new NetNamedPipeBinding(),
new EndpointAddress("net.pipe://localhost/iSPYDBService"));
pipeProxy = pipeFactory.CreateChannel();
var categories = pipeProxy.GetCategories();
这两项服务都托管在IIS上。我已经在数据库服务中为net.pipe提供了绑定,并且还添加了&#34; http,net.pipe&#34; in&#34;启用协议&#34;。
答案 0 :(得分:1)
您无法使用IIS Express。
在IIS中(完整,不快递)...转到您的网站。
跟着面包屑:
WCF主机网站&gt;管理应用程序&gt;高级设置&gt;启用协议
你可能有&#34; http&#34;或&#34; http,net.tcp&#34;已经设定。
添加&#34; net.pipe&#34; (前面有逗号)
如下所示。注意,不要添加任何空格。
http,net.tcp,net.pipe
在这种情况下,魔术是正确的值(&#34; net.pipe&#34;)。
您可以在此处详细了解
答案 1 :(得分:0)
以下内容应该有所帮助:
address=""
address="net.pipe://PROPER_NAME/YOUR_SERVICE.svc"