我已经通过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看到任何关于不允许远程连接的免责声明。
答案 0 :(得分:0)
如果您提供特定的IP和端口,那么它只会侦听该IP:端口上的传入连接。即如果他们使用不同的IP连接到该机器,它将无法工作。您可以使用通配符来侦听该计算机上的所有IP,例如:
appHost.Start("http://*:8889/");
否则,如果仍然无效,则很可能被防火墙阻止。