【问题标题】:Is it possible to expose an Owin service?是否可以公开 Owin 服务?
【发布时间】:2015-09-04 20:04:22
【问题描述】:

我们使用 OWIN 创建了自托管服务。它们在服务器内工作正常,我们可以使用http://localhost 请求和检索信息。我们为每个服务使用不同的端口,以便我们可以从http://localhost:8001 获取某些信息,从http://localhost:8015 获取其他信息等等。

现在,我们需要公开其中一项自托管服务的结果,以便通过 Internet 访问它。我们想提供一个自定义地址,例如 http://ourpublicinfo.mydomain.com:8001 或使用服务器 ip,例如 http://209.111.145.73:8001

这可能吗?

我们如何实现它?

我们的服务器操作系统是 Windows Server 2012 R2

【问题讨论】:

    标签: rest server owin self-hosting


    【解决方案1】:

    OWIN 自托管应用程序可以在 Windows 服务上运行,作为控制台进程,如果需要,还可以作为更强大的主机(如 IIS)的一部分。

    既然您提到您的应用程序作为服务运行,您可能会错过 IIS 提供的所有 GUI 好东西。然而实际上,IIS 在 http.sys 之上工作,就像 HttpListener 所做的一样(这可能是您用来自托管应用程序的工具)1。您只需要自己进行一些手动设置:

    1. 首先,您需要进行URL 保留,以便在非标准端口上发布。

    您为什么要这样做? 很简单,因为您不再在自己的本地计算机上单独在 localhost 下运行,您可能是管理员和/或拥有特殊特权/权力。

    由于这是一个服务器,并且用于运行服务的用户可能不是管理员(很可能),那么您需要授予该用户使用该 URL 的权限...这就是 URL 保留的来源进入现场。

    你几乎必须选择:

    • 打开供任何用户使用的 URL:

       netsh http add urlacl url=http://209.111.145.73:8001/ user="everyone" listen=yes
      
    • 或打开运行服务的用户使用的 URL,例如:NETWORK SERVICE:

       netsh http add urlacl url=http://209.111.145.73:8001/ user="NETWORK SERVICE" listen=yes
      

    还有一种方法可以为多个用户进行预订,使用 sddl、用户组等...但我不会深入探讨(你可以查一下)。

    1. 其次,你需要通过你的防火墙打开一个大厅(如果你在这个时代没有一个,我可怜你!)

    这方面有很多教程。您可以使用 GUI、netsh.exe 等等。

    您几乎需要做的就是确保您允许通过该端口的传入连接,这应该可以解决问题。

    要确保大厅完全开放,您可以使用http://www.yougetsignal.com/tools/open-ports/ 之类的工具,并在远程地址中插入 209.111.145.73,在端口号中插入 8001 >.

    如果由于某种原因它显示端口已关闭,即使在您的防火墙中为其创建了传入规则之后,您的服务器和外部世界之间也可能有一个或多个防火墙。


    有了这些 to 元素,您应该能够从外部访问您的自托管服务。

    至于通过http://ourpublicinfo.mydomain.com:8001 之类的地址访问您的服务,您需要在某处创建一个 DNS 条目,很可能是在 mydomain.com 的域注册器上创建一个ourpublicinfo 子域的记录,指向 209.111.145.73。

    从此时起,您应该可以通过直接 IP 和端口或通过上述 URL 访问您的服务。

    祝你好运!

    注意: 如果您的服务将被其他域访问,您可能需要确保您有CORS(跨域资源共享)明确定义并在您的服务上工作;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2011-10-23
      • 2020-09-05
      相关资源
      最近更新 更多