【问题标题】:Is it possible that a NancyHost uses another host name than localhost?NancyHost 是否有可能使用 localhost 以外的其他主机名?
【发布时间】:2018-01-10 17:08:20
【问题描述】:

创建 Nancy 自托管控制台应用程序需要包含 PORT 作为参数的本地地址:

using (var host = new NancyHost(new Uri("http://localhost:1234")))
{
   host.Start();
   Console.ReadLine();
}

虽然自定义 PORT 是一个有效的用例,但是否可以使用除 ("http://localhost") 之外的其他主机。如果是,是哪些原因以及出于什么原因?

背景:

我正在为服务器创建一个自定义设置文件,我想知道提供设置“端口”是否足够,或者提供一个包含主机的设置“主机”(或“URL”)是否更好作为港口?

编辑

为避免硬编码,HOST 部分可以通过应用程序设置 (App.config) 进行配置,这与服务器管理员使用的自定义设置文件不同。但是,我想让自定义设置文件尽可能简单。推荐人,问题:有什么可想而知的理由应该修改'http://localhost'部分吗?

【问题讨论】:

  • 您是否在询问是否可以在代码中硬编码 localhost?如果是这样,即使你相信它永远不会改变,答案也是一个响亮的否定。这只是常见的做法。
  • @tomredfern:请查看更新后的问题。
  • 你是问不管你把服务部署到哪个环境,它总是使用localhost吗?
  • 服务器将部署(作为 Windows 服务)到 Windows Server 2016。will it always use localhost?就是那个问题。服务器是否有可能使用 localhost 以外的其他主机?
  • 所以您的问题实际上应该是“Nancy 服务是否有可能使用 localhost 以外的其他主机名?”,而不是“我应该让主机名可配置”;-)

标签: c# .net server localhost nancy


【解决方案1】:

NancyHost 构造函数需要一个有效的 Uri 对象,并且要创建一个您无法绕过指定 HOST 的对象。根据您的应用程序,使主机可在您的程序内、某种形式的通信或通过设置文件进行编辑。不要将 HOST 硬编码为 localhost,即使您认为它会保持这种状态,最好保持可修改的内容。如果您希望设置文件尽可能简单,请将其拆分为 2 个文件:

基本设置

高级设置

其中 advancedSettings 仅包含您很少(如果有的话)更改的内容,而 basicSettings 包含您希望更频繁更改的内容。

在某个时间点,您可能想连接到另一台主机,因为 NancyHost 已经移动到云端或同一网络中的另一个系统(后者更有可能)。以防万一发生这种情况,您应该使其可修改。

【讨论】:

  • 感谢您的回答。我想我会使用 2 个设置文件(其中高级的是默认应用程序设置文件:App.config)。
  • 但是,我没有理解最后一部分的重点在某个时间点可能会出现您想要连接到另一台主机的情况...NancyHost 是服务器,它总是在 localhost(它正在运行的计算机)上侦听。那么改变那部分的用例在哪里呢?这实际上是我感兴趣的一点;)
猜你喜欢
  • 2021-10-01
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2013-06-05
  • 1970-01-01
相关资源
最近更新 更多