AppHostHttpListenerBase&远程连接

时间:2013-07-11 19:16:18

标签: servicestack

我已经通过AppHostHttpListenerBase类使用自托管设置了一个小型ServiceStack。我没有使用localhost或127.0.0.1作为baseUri,而是使用了机器的ip。在本地连接时它工作得很好,但是当从其他设备(笔记本电脑,台式机,平板电脑等)连接时,它只是超时。

这是我的AppHost以及我如何启动它。

public class AppHost : AppHostHttpListenerBase
{
    private static ILog log;

    public AppHost() : base("ServiceStack Examples", typeof(AppHost).Assembly)
    {
        LogManager.LogFactory = new DebugLogFactory();
        log = LogManager.GetLogger(typeof(AppHost));
    }

    public override void Configure(Container container)
    {
    }
}

string path = "http://192.168.3.125:8889/";
var appHost = new AppHost();
appHost.Init();
appHost.Start(path);
System.Console.WriteLine("AppHost Created at {0}, listening on {1}", DateTime.Now, path);
Thread.Sleep(Timeout.Infinite);
System.Console.WriteLine("ReadLine()");
System.Console.ReadLine();

这是在使用最新的ServiceStack库等在.NET 4.0中编译的Xamarin中开发的。在Windows 8 Pro上运行并启动具有管理员权限的Xamarin等。

我错过了什么吗?我看了一遍,但没有看到任何似乎指向我特定方向的东西。我也没有在https://github.com/ServiceStack/ServiceStack/wiki/Self-hosting看到任何关于不允许远程连接的免责声明。

1 个答案:

答案 0 :(得分:0)

如果您提供特定的IP和端口,那么它只会侦听该IP:端口上的传入连接。即如果他们使用不同的IP连接到该机器,它将无法工作。您可以使用通配符来侦听该计算机上的所有IP,例如:

appHost.Start("http://*:8889/");

否则,如果仍然无效,则很可能被防火墙阻止。