自托管OWIN和urlacl
本文关键字:urlacl OWIN | 更新日期: 2023-09-27 18:14:25
我使用Microsoft.Owin.Host.HttpListener
和Microsoft.Owin.Hosting
在OWIN中创建了一个自托管的Nancy/SignalR应用程序
事情在本地工作得很好,但只要我尝试使用任何东西,但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
};
下面是启动和停止服务器的文件的源代码。
所以你需要将url以与url相同的格式传递到StartOptions
。
将开始选项更改为下面的代码解决了这个问题。现在该应用程序可以通过网络访问。
var options = new StartOptions("http://*:8989")
{
ServerFactory = "Microsoft.Owin.Host.HttpListener"
};
我在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地址,每个地址需要它自己的url记录:
不工作:
netsh http>add urlacl http://+:9000/ user=EveryOne
OK:
netsh http>add urlacl http://localhost:9000/ user=EveryOne
netsh http>add urlacl http://127.0.0.1:9000/ user=EveryOne
etc.
分别为每个地址添加预约后,一切正常
感谢@kay。前提是我能够通过IP地址从同一台机器访问我的自托管Web API 2.2 (OWIN/Katana,控制台应用)。但是,只需将其合并为一个简单的步骤:
- 在Program.cs的
Main
中(用于控制台应用程序):WebApp.Start<Startup>("http://*:8080");
- 从Windows命令提示符(以管理员身份运行)输入
netsh http add urlacl http://*:8080/ user=EVERYONE
- 转到高级安全Windows防火墙,添加一个打开TCP端口8080的入站规则
您应该能够使用IP地址或计算机名从另一台机器访问。
免责声明:我不是安全专家,所以我不知道这样做的安全含义