是否可以公开Owin服务?

时间:2015-09-04 20:04:22

标签: rest server owin self-hosting

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

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

这可能吗?

我们如何实施?

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

1 个答案:

答案 0 :(得分:2)

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

由于您提到您的应用程序作为服务运行,您可能会遗漏IIS提供的所有GUI好东西。但实际上,IIS在http.sys之上工作,就像HttpListener一样(这可能是你用来自我托管应用程序的那些)1。您只需要自己动手设置:

  1. 首先,您需要进行网址预订才能在非标准端口上发布。
  2. 你为什么要这样做?很简单,因为你不再只在本地主机上运行你自己的本地机器,你可能是管理员和/或有特权/权力。

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

    你几乎要选择:

    • 打开任何用户使用的网址:

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

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

    有一种方法可以使用sddl,用户组等对几个用户进行预订...但是我不会进入它(你可以查看它)。

    1. 其次,您需要通过防火墙打开一个大厅(如果您在这个时代没有一个大厅,我可怜你!)
    2. 有很多关于此的教程。您可以使用GUI,netsh.exe以及其他内容。

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

      为了确保大厅一直畅通,您可以使用http://www.yougetsignal.com/tools/open-ports/之类的工具,在远程地址中插入209.111.145.73,在端口号<中插入8001 / em>的

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

      对于那些元素,您应该能够从外部访问自助托管服务。

      至于通过http://ourpublicinfo.mydomain.com:8001等地址访问您的服务,您需要在某处创建DNS条目,最有可能在 mydomain.com 的域名注册商处创建,您可以在为指向209.111.145.73的 ourpublicinfo 子域创建 A记录

      从现在开始,您应该可以通过直接IP和端口或通过上述网址访问您的服务。

      祝你好运!

        

      注意:   如果您的服务可以从其他域访问,您可能需要确保已经明确定义了 CORS(Cross Origen Resourece Sharing)并且正在处理您的服务;)