远程访问WCF服务时发生超时错误

本文关键字:超时 错误 WCF 服务 远程访问 | 更新日期: 2023-09-27 18:00:08

当我在本地访问WCF服务时,它可以工作。为此,我在浏览器中键入:http://localhost:54123/MyService/GetValue

这显示了我期望的json格式的输出。但是,当使用远程访问时http://myIPAddress:54123/MyService/GetValue我在Chrome中获得ERR_CONNECTION_TIMED_OUT。

我已经将所有TCP端口的入站IP列入白名单,所以我不确定为什么我无法远程访问。如果有什么不同的话,它将托管在amazonEC2实例上。

以下是我在main()方法中通过Topshelf 托管服务的代码

    const string serviceUri = "http://localhost:54123/MyService";
    var host = HostFactory.New(configurator =>
    {
        configurator.Service<WcfServiceWrapper<MyServiceClass, IMyServiceClass>>(serviceConfigurator =>
        {
            serviceConfigurator.ConstructUsing(x =>
                new WcfServiceWrapper<MyServiceClass, IMyServiceClass>("MyService", serviceUri));
            serviceConfigurator.WhenStarted(service => service.Start());
            serviceConfigurator.WhenStopped(service => service.Stop());
        });
        configurator.RunAsLocalSystem();
        configurator.SetDescription("Runs My Service.");
        configurator.SetDisplayName("MyService");
        configurator.SetServiceName("MyService");
    });

以下是我的WcfWrapper start()方法中的相关代码

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;

以下是我在配置文件中的内容

<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>

远程访问WCF服务时发生超时错误

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