1

AppHostHttpListenerBase クラスを介したセルフホスティングを使用して、小さな ServiceStack をセットアップしました。baseUri として localhost または 127.0.0.1 を使用する代わりに、マシンの 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でリモート接続を許可しないという免責事項も見当たりませんでした。

4

1 に答える 1

0

特定の IP とポートを指定すると、その IP:ポートで着信接続のみをリッスンします。つまり、別の IP を使用してそのマシンに接続すると機能しません。ワイルドカードを使用して、そのマシン上のすべての IP をリッスンできます。たとえば、次のようになります。

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

それでもうまくいかない場合は、ファイアウォールによってブロックされている可能性があります。

于 2013-07-11T19:38:21.757 に答える