2013-07-11 141 views
1

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

这是我的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正在开发编译.NET 4.0采用最新ServiceStack库等运行在Windows 8 Pro和具有管理员权限启动Xamarin等

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

回答

0

如果您提供特定的IP和端口,那么它只会监听该IP:端口上的传入连接。即如果他们使用不同的IP连接到那台机器,它就不会工作。您可以使用通配符来听所有IP那台机器上,e.g:

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

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