我有很多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 中浏览并确认它。