我有一个自托管NancyFX Web服务器的桌面应用程序。作为桌面应用程序,我们需要允许动态IP地址,因此我们使用带有netsh的通配符选项注册了URL,如下所示:
netsh http add urlacl url=http://+:1234/ user=Everyone
但是,当此应用程序在非管理员帐户下运行时,将引发以下异常。
The Nancy self host was unable to start, as no namespace reservation existed for the provided url(s).
Please either enable UrlReservations.CreateAutomatically on the HostConfiguration provided to
the NancyHost, or create the reservations manually with the (elevated) command(s):
netsh http add urlacl url=http://192.168.1.90:1234/ user=Everyone
我尝试了很多通配符注册的组合,都具有相同的结果。我还看了在加载Nancy时注册通配符,但由于Nancy使用Uri类型,这是无效的。
我假设通过使用通配符注册我已经注册了要使用的任何IP地址。但是Nancy似乎需要注册特定的ip地址。
如果有人可以告诉我为什么通配符注册不能与Nancy合作,或者甚至更好,如何让它与Nancy合作,我真的很感激。
答案 0 :(得分:0)
一个老问题,但如果有人遇到此问题,Nancy SelfHost允许您使用 HostConfiguration 对象自动创建网址预留。
然后在启动时自动保留网址。
//Nancy configuration
HostConfiguration hostConfig = new HostConfiguration()
{
UrlReservations = new UrlReservations()
{
//create URL reservations automatically
CreateAutomatically = true
}
};
//Uri
Uri uri = new Uri("http://localhost:9999");
using (var host = new NancyHost(hostConfig, uri))
{
host.Start();
Console.WriteLine("Running self-hosted server ...");
Console.WriteLine("Press [Enter] to close the application.");
Console.ReadLine();
}