我使用Microsoft.Owin.Host.HttpListener
和Microsoft.Owin.Hosting
在本地工作的东西非常好但是一旦我尝试使用除localhost之外的任何东西来访问应用程序,我会收到HTTP Error 503. The service is unavailable
错误。我甚至无法使用127.0.0.1
或计算机名称访问该应用。
我尝试使用
将端口添加到urlacl http add 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
};
这是启动和停止服务器的文件的源代码 https://github.com/NzbDrone/NzbDrone/blob/vnext/NzbDrone/Owin/OwinHostController.cs
答案 0 :(得分:26)
所以事实证明你需要以与urlacl相同的格式将网址传递到StartOptions
。
将启动选项更改为以下代码可解决问题。现在,该应用程序可通过网络访问。
var options = new StartOptions("http://*:8989")
{
ServerFactory = "Microsoft.Owin.Host.HttpListener"
};
答案 1 :(得分:11)
我花了很多时间在Windows 8.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);
我无法收听或得到503错误......
如果你想收听多个IP地址,每个地址都需要自己的urlacl记录:
不起作用:
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.
单独为每个地址添加预订后,一切正常。
答案 2 :(得分:8)
感谢@ kay.one提供的信息,我可以通过IP地址从同一台机器访问我自己托管的Web API 2.2(OWIN / Katana,控制台应用程序)。然而,只需将其简化为一个简单的步骤:
Main
中(对于控制台应用):WebApp.Start<Startup>("http://*:8080");
netsh http add urlacl http://*:8080/ user=EVERYONE
然后,您应该能够使用IP地址或计算机名从另一台计算机访问。
免责声明:我不是安全专家,所以我不知道这样做的安全隐患。