我在Visual Studio 2017中写了一个WCF服务。然后我将这个服务添加到IIS(不是快速版本,而是完整的版本IIS)。它作为默认创建网站下的应用程序添加。我可以在http://localhost/<websitename>/MyService.svc/test/123
访问我的服务端点而不会出现任何问题。 /test/123
只是一个简单的GET端点。
已为端口80配置默认网站。
然而,当我将端口从80更改为1234时,它不起作用。当我点击"Service Unavailable. HTTP Error 503."
端点时,它只返回/test/123
。
我已经执行了console命令将端口添加到ACL netsh http add urlacl url=http://+:1234/ user=everyone
。
有谁知道如何让另一个端口(非80)工作?
编辑: 我知道有一个答案How to run WCF service on a specific port解释了如何绑定到另一个端口。但是,接受的答案使用net.tcp协议。我想使用HTTP协议。
有没有办法用HTTP协议做到这一点?如果无法完成,那么我想不得不重新设计并交换到net.tcp协议。
我是.NET开发和WCF的新手,所以有希望有经验的人可以指出我正确的方向。
答案 0 :(得分:0)
事实证明,这个问题与所谓的关联答案无关。
在IIS中运行我的WCF服务之前,我试图将其部署为WAS,然后是控制台应用程序。在我使这两个实现工作的过程中,我必须执行命令netsh http add urlacl url=http://+:1234/ user=everyone
,以便可以访问端口。
幸运的是,我偶然发现了这个链接: https://serverfault.com/questions/666976/service-unavailable-if-i-try-to-access-iis-website-via-ip-address-works-fine-vi
虽然它没有得到公认答案,但评论仍然有答案。我的问题完全是因为我执行了netsh
命令。发生的情况是该命令导致保留ip / port,因此,IIS无法连接到ip / port,因此导致Service Unavailable
错误。我假设如果WAS和Console版本需要执行该命令,那么IIS版本也需要它。
至于让IIS WCF服务在任何其他端口上可用,该过程非常简单。在IIS本身(执行&#34; inetmgr&#34;在运行中启动)中,在您创建的默认或自定义网站中,编辑绑定并将HTTP端口更改为您想要的任何端口。在那之后,它完成了。您应该能够通过HTTP从该端口访问您的应用程序/网站。
例如:
http://localhost:<some port>/<websitename>/MyService.svc/test/123
我的WCF服务配置是允许HTTP访问的标准配置。
如果您想从其他计算机或互联网访问它,则需要配置路由器以端口转发所选端口(如果需要)并确保防火墙允许该端口的数据流。
很多&#34;谢谢&#34;假设这是一些重复的downvoters。你的帮助&#34;有助于找到问题的解决方案。