我们使用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
答案 0 :(得分:2)
OWIN自托管应用程序可以作为控制台进程在Windows服务上运行,并且如果需要,可以作为IIS等更强大的主机的一部分运行。
由于您提到您的应用程序作为服务运行,您可能会遗漏IIS提供的所有GUI好东西。但实际上,IIS在http.sys之上工作,就像HttpListener一样(这可能是你用来自我托管应用程序的那些)1。您只需要自己动手设置:
你为什么要这样做?很简单,因为你不再只在本地主机上运行你自己的本地机器,你可能是管理员和/或有特权/权力。
由于这是一个服务器,并且用于运行服务的用户可能不是管理员(很可能),那么您需要授予该用户使用该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,用户组等对几个用户进行预订...但是我不会进入它(你可以查看它)。
有很多关于此的教程。您可以使用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)并且正在处理您的服务;)