gpt4 book ai didi

nancy - 在 TopShelf 下运行 Nancy Self Host

转载 作者:行者123 更新时间:2023-12-01 11:25:39 26 4
gpt4 key购买 nike

我在工作中使用 topShelf (Windows 7) 编写了一个 Nancy 自托管服务,它工作得很好。我把它带回家并在 Windows 10 下运行它,但出现以下错误:

Nancy 自身主机无法启动,因为提供的 URL 不存在命名空间保留。

请在提供给的 HostConfiguration 上启用 UrlReservations.CreateAutomaticallyNancyHost,或使用(提升的)命令手动创建预订:

netsh http 添加 urlacl url="http://+:5000/"user="Everyone"

我看到了这个建议:

HostConfiguration hostConfigs = new HostConfiguration()
{
UrlReservations = new UrlReservations() { CreateAutomatically = true }
};

但它似乎只在运行您自己的主机时有效,在 TopShelf 中无效。这是我的主要代码:

    public static void Main()
{
HostFactory.Run(x =>
{
//x.UseLinuxIfAvailable();
x.Service<SelfHost>(s =>
{
s.ConstructUsing(name => new SelfHost());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});

x.RunAsLocalSystem();
x.SetDescription("SciData Recipe Data Interaction");
x.SetDisplayName("SciData.Recipe Service");
x.SetServiceName("SciData.Recipe");
});
}

有人可以建议如何修复此问题以便它在 Windows 10 下运行吗?谢谢...

更新:以下确实有效:以管理员身份运行命令 shell 并键入以下内容似乎使一切正常。

netsh http add urlacl url=http://+:1234/ user=DOMAIN\username

其中 1234 是服务使用的端口。我仍然想找出如何在代码中执行此操作,但如果这不起作用,这就足够了。

最佳答案

查看Topshelf.Nancy也可以作为 NuGet 包使用。当您安装该服务时,它会为您执行 URL 预留 (netsh http)。卸载服务时也会被删除。

  1. 将 Topshelf.Nancy 添加到您的项目中
  2. 将“WithNancyEndpoint”添加到您的服务

您的代码:

public static void Main()
{
HostFactory.Run(x =>
{
//x.UseLinuxIfAvailable();
x.Service<SelfHost>(s =>
{
s.ConstructUsing(name => new SelfHost());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
s.WithNancyEndpoint(x, c =>
{
c.AddHost(port: 1234);
c.CreateUrlReservationsOnInstall();
});
});

x.RunAsLocalSystem();
x.SetDescription("SciData Recipe Data Interaction");
x.SetDisplayName("SciData.Recipe Service");
x.SetServiceName("SciData.Recipe");
});
}

关于nancy - 在 TopShelf 下运行 Nancy Self Host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37401481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com