C# 无法侦听管道名称,因为另一个管道端点已在侦听该名称
我得到以下错误: 无法在管道名称“net”上侦听。pipe://localhost/ServiceModelSamples/service/'因为另一个管道端点已在侦听该名称 我正在从另一个WCF调用调用windows服务内部的WCF自托管服务,如下所示 $ App.Config $C# 无法侦听管道名称,因为另一个管道端点已在侦听该名称,c#,wcf,windows-services,named-pipes,C#,Wcf,Windows Services,Named Pipes,我得到以下错误: 无法在管道名称“net”上侦听。pipe://localhost/ServiceModelSamples/service/'因为另一个管道端点已在侦听该名称 我正在从另一个WCF调用调用windows服务内部的WCF自托管服务,如下所示 $ App.Config $ /配置> 听起来好像有两个侦听器在争夺同一端口。请确保尚未运行实例,然后重试。这是否有帮助?好的,我已经更改了一些代码,现在我在尝试访问proxy.SendPin(pin)时遇到另一个错误。“读取管道时出错:管道
/配置>
听起来好像有两个侦听器在争夺同一端口。请确保尚未运行实例,然后重试。这是否有帮助?好的,我已经更改了一些代码,现在我在尝试访问proxy.SendPin(pin)时遇到另一个错误。“读取管道时出错:管道已结束。”请参阅原始帖子
ServiceHost _host;
var guidid = Guid.NewGuid().ToString() ;
_host = new ServiceHost(typeof(CalculatorService), new Uri[] { new Uri("net.pipe://localhost/" + guidid)});
_host.AddServiceEndpoint(typeof(ICalculator),
new NetNamedPipeBinding(),
"");
_host.Open();
ChannelFactory<ICalculator> factory = new ChannelFactory<ICalculator>(
new NetNamedPipeBinding(NetNamedPipeSecurityMode.None),
new EndpointAddress("net.pipe://localhost/" + guidid));
ICalculator proxy = factory.CreateChannel();
proxy.SendPin(pin);
((IClientChannel)proxy).Close();
factory.Close();
namespace PINSender
{
// Define a service contract.
public interface ICalculator
{
[OperationContract]
void SendPin(string pin);
}
// Implement the ICalculator service contract in a service class.
public class CalculatorService : ICalculator
{
// Implement the ICalculator methods.
public void SendPin(string pin)
{
}
}
public class CalculatorWindowsService : ServiceBase
{
public ServiceHost serviceHost = null;
public CalculatorWindowsService()
{
// Name the Windows Service
ServiceName = "PINSenderService";
}
public static void Main()
{
ServiceBase.Run(new CalculatorWindowsService());
}
// Start the Windows service.
protected override void OnStart(string[] args)
{
if (serviceHost != null)
{
serviceHost.Close();
}
// Create a ServiceHost for the CalculatorService type and
// provide the base address.
serviceHost = new ServiceHost(typeof(CalculatorService));
// Open the ServiceHostBase to create listeners and start
// listening for messages.
serviceHost.Open();
}
protected override void OnStop()
{
if (serviceHost != null)
{
serviceHost.Close();
serviceHost = null;
}
}
}
// Provide the ProjectInstaller class which allows
// the service to be installed by the Installutil.exe tool
[RunInstaller(true)]
public class ProjectInstaller : Installer
{
private ServiceProcessInstaller process;
private ServiceInstaller service;
public ProjectInstaller()
{
process = new ServiceProcessInstaller();
process.Account = ServiceAccount.LocalSystem;
service = new ServiceInstaller();
service.ServiceName = "PINSenderService";
Installers.Add(process);
Installers.Add(service);
}
}
}