0

我面临与我的 WCF 服务的 net.pipe 端点相关的问题。我在 Windows 2008 R2 机器上配置了所需的服务器角色(应用程序和 Web 角色)和功能(Windows 激活)。我创建了一个带有 net.tcp、net.pipe 和 http 端点的示例 wcf 服务,并将其托管在 IIS 中。我已经在站点级别以及 Web 应用程序级别启用了所需的绑定。net.tcp 和 http 端点工作正常。但是如下所述,net.pipe 端点出现错误

System.ServiceModel.EndpointNotFoundException:在 net.pipe://localhost/MyWCFService/Service1.svc 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。

服务器堆栈跟踪:

在 System.ServiceModel.Channels.ConnectionUpgradeHelper.DecodeFramingFault(ClientFramingDecoder 解码器,IConnection 连接,Uri via,字符串 contentType,TimeoutHelper 和 timeoutHelper)

在 System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection 连接,ArraySegment`1 前导码,TimeoutHelper 和 timeoutHelper)

在 System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection 连接,TimeoutHelper & timeoutHelper)

在 System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan 超时)

在 System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(时间跨度超时)

在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)

在 System.ServiceModel.Channels.ServiceChannel.OnOpen(时间跨度超时)

在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)

在 System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel 通道,TimeSpan 超时)

在 System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan 超时,CallOnceManager 级联)

在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作,布尔单向,ProxyOperationRuntime 操作,Object[] 输入,Object[] 输出,TimeSpan 超时)

在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime 操作)

在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息)

在 [0] 处重新抛出异常:

在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)

在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 类型)

在 NetPipeValidation.ServiceReference1.IService1.GetData(Int32 值)

在 NetPipeValidation.ServiceReference1.Service1Client.GetData(Int32 值)

在 NetPipeValidation.Form1.button1_Click(对象发送者,EventArgs e)

我最初的怀疑是 net.pipe 协议没有正确激活。因此验证了所有必需的 Windows 服务都在正确运行(WAS、Net.Pipe Adaptar、Net.Tcp Adaptar)。我还检查了 SMSvcHost.exe.config 文件并确保它具有正确的配置。

由于所有服务都在运行,我启用了性能计数器并检查了我的 net.pipe 注册是否成功。Net.pipe 的 Regitrations Active 和 Net.pipe 注册的 Uris 计为 1。使用这些计数器值,我假设我的端点已正确配置并且从服务器端的角度来看是有效的。

出于某种原因,从客户端无法访问端点。我还需要在机器上进行其他验证吗?

4

1 回答 1

0

net.pipe 用于 x 进程调用,而不是 x 机器调用。如果您跨越机器边界,则使用 http 和/或 net.tcp。如果您的客户端和服务在同一台机器上,那么您应该使用 net.pipe。

于 2013-08-31T19:05:46.127 回答