远程访问WCF服务时出现超时错误

时间:2015-06-28 23:47:14

标签: c# .net wcf amazon-ec2 topshelf

当我在本地访问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)

1 个答案:

答案 0 :(得分:2)

问题的最可能原因是防火墙阻止了呼叫。