OWIN 自托管应用程序可以在 Windows 服务上运行,作为控制台进程,如果需要,还可以作为更强大的主机(如 IIS)的一部分。
既然您提到您的应用程序作为服务运行,您可能会错过 IIS 提供的所有 GUI 好东西。然而实际上,IIS 在 http.sys 之上工作,就像 HttpListener 所做的一样(这可能是您用来自托管应用程序的工具)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、用户组等...但我不会深入探讨(你可以查一下)。
- 其次,你需要通过你的防火墙打开一个大厅(如果你在这个时代没有一个,我可怜你!)
这方面有很多教程。您可以使用 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(跨域资源共享)明确定义并在您的服务上工作;)