1

我已经通过 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();

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

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

4

1 回答 1

0

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

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

否则,如果这仍然不起作用,则很可能被防火墙阻止。

于 2013-07-11T19:38:21.757 回答