Asp.net

在 IIS 7.5 上的同一埠上執行兩個網站?

  • April 26, 2018

我們需要能夠在相同的 Intranet 伺服器和埠號上執行一個 ASP.net Web 應用程序的兩個版本,但一個映射到 /,另一個映射到 /experimental(不是實名,但足夠接近)。

C:\inetpub\wwwroot\Version1 => http://test1.organization.com/ C:\inetpub\wwwroot\Version2 => http://test1.organization.com/experimental

第一個 URL 已經暴露給一些 beta 使用者,因此需要保持一定的穩定性。第二個將包含只有進入 /experimental 的使用者才能看到的實驗程式碼。我們無法選擇使用不同的伺服器或不同的埠。

過去,我通過將 / 映射到 IIS 中的站點下的站點,然後將第二個站點添加為它下面的應用程序,並將其別名為 /site2 來實現這一點。

伺服器站點 預設網站 <= 映射到第一個版本的物理路徑和// Application1 <= 映射到第二個版本和 /experimental 的嵌套應用程序

然而,這似乎是草率的。使用重寫規則或使用 ARR 會更乾淨嗎?如果是這樣,怎麼做?

謝謝!

ARR 和重寫規則的組合將很好地解決這個問題。以下是要遵循的步驟:

  1. 下載並安裝 ARR http://www.iis.net/download/ApplicationRequestRouting
  2. 在 IIS 管理器中,在連接窗格中選擇您的電腦,點兩下 IIS 部分中的應用程序請求路由功能,點擊操作窗格中的“伺服器代理”連結,然後選中“啟用代理”複選框並選擇應用行動。
  3. 更改現有兩個網站的綁定,例如將已發佈網站綁定到 81 埠,將實驗網站綁定到 82 埠。
  4. 創建一個新的網站和應用程序池,並將其綁定到http:*:80:. 將其命名為“預設網站”。將其物理路徑指向“%SystemDrive%\inetpub\DefaultWebSite”
  5. 為“預設”網站創建一個 web.config 文件,並在那裡編寫您的路由規則:
&lt;rules&gt;
   &lt;rule name="Reverse Proxy for Experimental" stopProcessing="true"&gt;
       &lt;match url="^.*/experimental/.*" /&gt;
       &lt;action type="Rewrite" url="http://{HTTP_HOST}:82/{R:0}" /&gt;
   &lt;/rule&gt;
   &lt;rule name="Reverse Proxy for Release" stopProcessing="true"&gt;
       &lt;match url=".*" /&gt;
       &lt;action type="Rewrite" url="http://{HTTP_HOST}:81/{R:0}" /&gt;
   &lt;/rule&gt;
&lt;/rules&gt;
  1. 您可能需要修改一些重寫規則,您可以在 IIS 上嘗試使用 URL 重寫模組小程序,並在此處閱讀更多資訊:http ://learn.iis.net/page.aspx/500/testing-rewrite- rule-patterns/ 如需進一步幫助,請務必瀏覽 Ruslan Yakushev 的部落格:http ://ruslany.net/

這將為您提供三個完全獨立的網站,可通過埠 80 上的單個外觀訪問(當然,如果您需要: http://localhost:81/default.aspx例如,您可以直接在埠 81 和 82 上訪問每個網站:)。

引用自:https://stackoverflow.com/questions/7087162