2015-09-04 53 views
1

我們已經使用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

回答

2

OWIN自託管的應用程序可以與如果需要的話,像IIS一個更強大的主機的一部分,在Windows服務運行,作爲一個控制檯程序和。

由於您提到您的應用程序正在作爲服務運行,因此您可能會缺少IIS提供的所有GUI功能。但實際上,IIS正如HttpListener所做的那樣工作在http.sys之上(這可能是您用來自行託管您的應用程序的東西)1。你只需做一些手工設置自己:

所有的
  1. 首先,你需要做一個URL保留以非標準端口上發佈。

你爲什麼要那樣做?很簡單,因爲你不是在你自己的本地機器上獨自運行本地主機,你可能是一個管理員和/或有特殊權限。

由於這是一個服務器,並且用於運行服務的用戶可能不是管理員(很可能),那麼您需要授予該用戶使用該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和什麼不是。

    幾乎所有你需要做的就是確保你允許通過該端口的傳入連接,並應該做的伎倆。

    爲了確保大廳是開放的通過,並通過您可以在端口號遠程地址和8001使用的工具,像http://www.yougetsignal.com/tools/open-ports/並插入209.111.145.73。

    如果由於某種原因,即使在防火牆中爲它創建了傳入規則後,它表明該端口已關閉,那麼您的服務器和外部世界之間可能有一個或多個防火牆。


    對於那些到位的元素,您應該可以從外部訪問您的自託管服務。

    至於通過像http://ourpublicinfo.mydomain.com:8001地址訪問你的服務,你需要的地方創建一個DNS條目,最有可能在你的域名註冊商爲mydomain.com,在那裏你可以創建一個A記錄ourpublicinfo子域指向209.111.145.73。

    從這時起,您應該可以通過直接IP和端口或通過上述URL訪問您的服務。

    祝你好運!

    注: 如果您的服務將從其他域的訪問,您可能需要確保你有CORS(跨奧利Resourece共享)明確界定,並在你的服務工作壓力太大;)