我有很多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中浏览并确保它。
答案 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'。