我有许多 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
像这样调用其中一个(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 中浏览并确保它。