我真的来自Http
的世界,并且从未对使用TCP的旧.NET Remoting做过多少工作,但我了解TCP概念,现在使用net.tcp绑定实现了几个WCF服务。最近几年。大部分时间它都在运行,我消耗它,故事结束。但是,有时服务器设置更高级,我得到1个服务器上存在的通信错误,而不是来自另一个服务器。证明它是否是防火墙/服务器/等。问题我需要看看是否可以毫无问题地看到或达到WCF服务。这是针对使用net.tcp的Windows Service托管的WCF服务,我试图弄清楚这种情况。
事情是通过HTTP绑定公开WCF服务,我可以在浏览器中填充URI以查看服务页面,让我知道服务正在正常运行。简单的测试。
如何通过net.tcp绑定公开WCF服务的等价物?我可以使用任何工具或命令来测试net.tcp//mycustomWCFService:8123/MyService
吗?我已经看到一些关于编写代码的帖子,以编程方式确定WCF服务是否可用,但我不希望这样做。我想检查是否尽可能没有代码,类似于我在浏览器中提取http端点。
感谢任何帮助,谢谢!
答案 0 :(得分:47)
如果您的服务实现了元数据端点(通常名为mex
并嵌套在主要端点下面,在本例中使用mexTcpBinding
实现),您可以" ping"它使用随Visual Studio提供的svcutil命令行实用程序。例如,
svcutil net.tcp://mycustomWCFService:8123/MyService/mex
如果它抛出错误,您的服务(可能)会失败。如果成功,你(可能)开展业务。如前面的括号所示,它是一个近似值。这意味着该地址的监听者能够为元数据请求提供服务。
答案 1 :(得分:32)
我发现至少看它是否正在侦听的另一种方法是在已安装的服务器上发出以下'netstat'命令(来自命令提示符):
netstat -ona |找到“8123”
(是的,这是上面命令中的管道分隔符)。如果返回任何内容,它会主动侦听并托管在搜索到的端口上。
答案 2 :(得分:3)
一种简单的方法是(假设服务托管在IIS中)将HTTP绑定(使用不同的端口!!)添加到同一个IIS站点并将<serviceDebug httpHelpPageEnabled="true" />
添加到服务行为。这样,您可以通过在浏览器中导航到其HTTP URL轻松检查服务是否已启动。不可否认,通过这种方式,您只能了解服务是否已启动,例如,您将无法检测到特定TCP端口上的任何网络问题。
如果您还需要解决后一个问题,或者如果无法添加HTTP绑定,您只需向服务合同添加一个简单的“PING”操作,并使用net.tcp客户端来调用该绑定。 / p>
答案 3 :(得分:0)
您还可以使用telnet客户端程序发现侦听端口,即telnet {url或IP} {port}。要检查网站是否已启动..'telnet www.godaddy.com 80'应该首先生成一个空白窗口,然后在没有命令的情况下发出请求超时响应(400)。