没有端点监听net.pipe异常

时间:2011-08-04 11:15:12

标签: wcf wcf-binding netnamedpipebinding

我有很多WCF服务,我需要从另一个服务中调用一个服务。为此,我决定使用netNamedPipeBinding

我的web.config文件如下所示。 (我没有在这里复制不相关的东西。)

 <services>
          <service             name="Services.AuthorizationService"    >
            <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" >
            <endpoint
              name="AuthorizationService"
              address=""
              binding="basicHttpBinding"               contract="ServiceContracts.IAuthorizationService" />
            <endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc"
                   binding="netNamedPipeBinding"                   contract="ServiceContracts.IAuthorizationService"
                   name="AuthorizationNamedPipeEndpoint"/>           
          </service>
</Services>

web.config文件中的客户端部分如下所示:

<client>
      <endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc"
       binding="netNamedPipeBinding"            contract="ServiceContracts.IAuthorizationService" name="AuthorizationServiceNamedPipe" />
    </client>

我试图像这样调用其中一个OperationContract s(GetDetails):

  using (ChannelFactory<IAuthorizationService> authorizationChannel = new ChannelFactory<IAuthorizationService>("AuthorizationServiceNamedPipe"))
                        {
                            IAuthorizationService authorizationService = authorizationChannel.CreateChannel();
                            var response = authorizationService.GetDetails(new GetDetailsRequestMessage());
                        }

当我执行此代码时,我在调用OperationContract GetDetails的行中得到异常:

net.pipe://localhost/TestSite/AuthorizationService.svc上没有可以接受该消息的端点。这通常是由错误的地址或SOAP操作引起的。有关详细信息,请参阅InnerException(如果存在)。

我无法找出确切的问题。也没有InnerException。 我使用的是Windows7机器,IIS版本是IIS7.5。请注意,我可以从我的Winform应用程序中调用此服务,没有任何问题。 net.pipe绑定被添加到IIS中的网站绑定。

如何使用net.pipe传输确保服务正常工作?如果是HTTP,我们可以在IE中浏览并确保它。

2 个答案:

答案 0 :(得分:9)

Windows Communication Foundation Non-HTTP Activation激活Control Panel —> Programs and Features, and then click "Turn Windows Components On or Off" in the left pane. Expand the Microsoft .NET Framework 3.5组件后,此问题已得到解决。

当它被激活并且您使用非HTTP绑定时,将自动使用WAS。

我做了一个非常基本的&amp;愚蠢的错误,但它帮助我学到了很多东西。以下文章对我帮助很大:

Extend Your WCF Services Beyond HTTP With WAS

Hosting WCF Services in Windows Activation Service

WCF gets Access denied when the consumer try invoke a WCF service calls hosted on Virtual Machine

最后一个链接给了我一个指针,指出服务器证书相关的配置可能会导致麻烦。我正在为服务添加一个行为(在问题中没有看到)。该行为使用的是服务器证书。

答案 1 :(得分:0)

我们在SharePoint 2013中遇到了同样的问题。安装期间发生了某些事情,并且未启用激活设置。我不确定它是否是应用程序服务器功能或其他问题。

非常感谢帖子!我们也能够纠正SP 2013问题。以下是我们看到的那些可能遇到它的人的例外情况:

System.ServiceModel.EndpointNotFoundException:net.pipe://localhost/SecurityTokenServiceApplication/appsts.svc 上没有可以接受该消息的端点。这通常是由错误的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)。 ---&GT;

System.IO.PipeException:在本地计算机上找不到管道端点'net.pipe://localhost/SecurityTokenServiceApplication/appsts.svc'。