当我在本地访问WCF服务时,它可以工作。为此,我在浏览器中输入:http://localhost:54123/MyService/GetValue
这显示了我预期的json格式输出。但是,使用http://myIPAddress:54123/MyService/GetValue远程访问时,我会在Chrome中获得ERR_CONNECTION_TIMED_OUT。
我的入站IP已列入所有TCP端口的白名单,所以我不确定为什么我无法远程访问。如果这有任何不同,这将被托管在亚马逊EC2实例上。
以下是我在main()方法中通过Topshelf托管服务的代码
var webHttpBinding = new WebHttpBinding(WebHttpSecurityMode.None);
_serviceHost.AddServiceEndpoint(typeof(TServiceContract), webHttpBinding, _serviceUri);
var webHttpBehavior = new WebHttpBehavior
{
DefaultOutgoingResponseFormat = WebMessageFormat.Json
};
_serviceHost.Description.Endpoints[0].Behaviors.Add(webHttpBehavior);
_serviceHost.Open();
openSucceeded = true;
以下是我的WcfWrapper start()方法的相关代码
<configuration>
<system.serviceModel>
<services>
<service name="MyServiceClassNS.MyServiceClass">
<host>
<baseAddresses>
<add baseAddress="http://myIPAddress:54123/MyService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
以下是我在配置文件中的内容
$(basename)
答案 0 :(得分:2)
问题的最可能原因是防火墙阻止了呼叫。