15

我正在创建一个最终将托管在 Windows 服务中的 Nancy 模块。我目前正在 WPF 测试应用程序中运行它。要启动 Nancy 托管,我使用 Nancy.Hosting.Self 并调用:

nancyHost = new Nancy.Hosting.Self.NancyHost(new Uri("http://localhost:8080"));
nancyHost.Start();

在我的本地机器上,我可以通过在地址栏中输入http://localhost:8080进入 Web 浏览器并访问我的模块。

如果我转到另一台机器,我将无法访问该服务。我的 Windows 防火墙已关闭。

如果我在 baseUri 中使用 localhost 以外的任何内容启动托管,则在调用 nancyHost.Start(); 时会收到“拒绝访问”异常;

有什么我想念的吗?只要我知道主机的 IP:端口,我是否应该能够从任何机器访问 Nancy 模块?我需要注意任何类型的“主机标题”吗?

感谢您对此的帮助。

4

3 回答 3

26

Windows 将阻止您在未经许可的情况下侦听端口。您可以以管理员身份运行您的进程,也可以使用“netsh”添加权限:

netsh http 添加 urlacl url=http://+:8080/app user=domain\user

“+”是通配符,因此它可以侦听任何 IP。

通常您会在安装过程中处理后者,因此您可能希望以管理员身份运行以进行调试,然后确保您的安装程序设置了相关权限。

于 2011-12-18T09:31:20.753 回答
0

对于本地调试,使用

http://+:8733/Design_Time_Addresses

您可以添加任何您喜欢的子目录,例如

http://+:8733/Design_Time_Addresses/myService 

并调试它

http://localhost:8733/Design_Time_Addresses/myService

无需以管理员身份运行 IDE(Visual Studio?)。

于 2014-08-21T13:19:06.733 回答
0

看这个:自托管-南希

主机配置:UrlReservations,在代码下添加:

var configuration = new HostConfiguration
        {
            UrlReservations = new UrlReservations { CreateAutomatically = true }
        };

OK,你可以创建你的主机了!~

于 2017-09-24T08:27:29.110 回答