我使用以下代码创建了一个windows服务:
protected override void OnStart(string[] args)
{
var localAddress = new Uri("net.pipe://localhost");
var netExposedAddress = new Uri("net.tcp://localhost:8523");
var addressCollection = new Uri[] { localAddress, netExposedAddress };
var type = typeof(AnalCron);
host = new ServiceHost(type, addressCollection);
host.AddServiceEndpoint(typeof(IAnalCron),
new NetNamedPipeBinding(),
"PipeReverse");
host.AddServiceEndpoint(typeof(IAnalCron),
new NetTcpBinding(SecurityMode.None),
"TcpReverse");
host.Open();
TheLoop();
}我还编写了测试,看看是否能够在服务部署时与其进行通信:
[TestMethod]
public void TestRemote()
{
var binding = new NetTcpBinding(SecurityMode.None);
var epAddrs = new EndpointAddress("net.tcp://192.168.201.27:8523/TcpReverse");
var pipeFactory =
new ChannelFactory<IAnalCron>(
binding,
epAddrs);
IAnalCron pipeProxy =
pipeFactory.CreateChannel();
var x = pipeProxy.ReverseString("bla");
Assert.AreEqual("alb", x);
}
[TestMethod]
public void TestLocal()
{
var binding = new NetNamedPipeBinding();
var epAddrs = new EndpointAddress("net.pipe://localhost/PipeReverse");
var pipeFactory =
new ChannelFactory<IAnalCron>(
binding,
epAddrs);
IAnalCron pipeProxy =
pipeFactory.CreateChannel();
var x = pipeProxy.ReverseString("bla");
Assert.AreEqual("alb", x);
}当我从本地机器使用服务时,不会出现任何问题,但是当我使用上面的代码访问网络上的远程计算机时,会得到以下错误:
无法连接到net.tcp://192.168.201.27:8523/TcpReverse。连接尝试持续时间为00:00:21.0231021。TCP错误代码10060:连接尝试失败是因为连接方在一段时间后没有正确响应,或建立连接失败是因为连接主机未能响应192.168.201.27:8523。
我尝试输入机器名而不是IP地址,但没有运气。.config文件中没有配置,我想在代码中设置所有内容。知道我做错什么了吗?
发布于 2015-01-19 14:35:51
正如@stuartd所指出的,我的防火墙配置有问题。当我将服务添加到异常列表中时,通信进行得很顺利。
https://stackoverflow.com/questions/27923252
复制相似问题