Signalr 自托管OWIN和urlacl

Signalr 自托管OWIN和urlacl,signalr,acl,nancy,self-hosting,owin,Signalr,Acl,Nancy,Self Hosting,Owin,我使用Microsoft.OWIN.Host.HttpListener和Microsoft.OWIN.Hosting创建了一个自托管Nancy/Signal应用程序,该应用程序在OWIN中自托管 在本地一切都很好,但当我尝试使用localhost以外的任何东西来访问应用程序时,我得到了一个HTTP错误503。服务不可用错误。我甚至无法使用127.0.0.1或机器名访问应用程序 我已尝试使用将端口添加到urlacl http添加urlacl http://*:8989/user=EVERYONE但

我使用
Microsoft.OWIN.Host.HttpListener
Microsoft.OWIN.Hosting
创建了一个自托管Nancy/Signal应用程序,该应用程序在OWIN中自托管

在本地一切都很好,但当我尝试使用localhost以外的任何东西来访问应用程序时,我得到了一个
HTTP错误503。服务不可用
错误。我甚至无法使用
127.0.0.1
或机器名访问应用程序

我已尝试使用将端口添加到urlacl

http添加urlacl http://*:8989/user=EVERYONE
但似乎什么都不做

以下是我尝试过的OWIN启动选项

        var options = new StartOptions
        {
            Url = "127.0.0.1",
            App = GetType().AssemblyQualifiedName,
            Port = _configFileProvider.Port
        };

    var options = new StartOptions
        {
            App = GetType().AssemblyQualifiedName,
            Port = _configFileProvider.Port
        };
以下是启动和停止服务器的文件的源代码

因此,您需要以与urlacl相同的格式将url传递到
StartOptions

将启动选项更改为下面的代码修复了该问题。现在可以通过网络访问该应用程序

  var options = new StartOptions("http://*:8989")
  {
      ServerFactory = "Microsoft.Owin.Host.HttpListener"
  };

我在Windows8.1上花了很多时间解决类似的问题

    StartOptions options = new StartOptions();

    options.Urls.Add("http://localhost:9000");
    options.Urls.Add("http://127.0.0.1:9000");
    options.Urls.Add("http://192.168.0.102:9000");
    options.Urls.Add(string.Format("http://{0}:9000", Environment.MachineName));

    WebApp.Start<Startup>(options);
好:


在分别为每个地址添加预订后,一切正常。

感谢@kay.one提供的信息,我能够通过IP地址从同一台机器访问我的自托管Web API 2.2(OWIN/Katana,控制台应用程序)。但是,只需将其整合为一个简单的步骤:

  • 在Program.cs的
    Main
    中(对于控制台应用程序):
    WebApp.Start(“http://*:8080”)
  • 从Windows命令提示符(以管理员身份运行)输入
    netsh http add urlacl http://*:8080/user=everybody
  • 转到具有高级安全性的Windows防火墙并添加一条入站规则,该规则将打开TCP端口8080
  • 然后,您应该能够使用IP地址或计算机名从另一台计算机进行访问


    免责声明:我不是安全专家,因此我不知道这样做的安全含义。

    您在代码中使用了什么url?@dfowler用实际代码更新了问题。请尝试将url更改为“*”而不是仅绑定到127.0.0.1。您的urlacl也应该是+而不是*afaik@stevenrobins当我使用+时,它甚至不适用于LocalHost它需要如何适应SignalR 2 beta?Url和应用程序不是StartOptions的属性,正如我看到的那样。@uosɐ更新了示例代码,以匹配当前版本的owin(1.1.0 beta 2)Wow的语法。非常非常有用:)有很多其他类似的答案(主要是关于IIS Express),但这一个确实有效。而且,实际上,您不想使用urlacl保留端口。最后,在Server 2012和Windows 8.1上对我有效的方法是使用http://+:9000(未设置URL ACL)并打开端口(在我的情况下是在域上)。添加几个IP地址或URL也可以在Microsoft.Owin.Hosting 3.0.1上使用新的StartOption(“http://*:9000/”)。和netsh http>添加urlacl http://*:9000/,或以管理员身份运行应用程序。
        netsh http>add urlacl http://+:9000/ user=EveryOne    
    
        netsh http>add urlacl http://localhost:9000/ user=EveryOne
        netsh http>add urlacl http://127.0.0.1:9000/ user=EveryOne
        etc.