在IIS 7.5上的同一端口上运行两个网站?

use*_*825 13 asp.net iis asp.net-routing request

我们需要能够在同一个Intranet服务器和端口号上运行一个ASP.net Web应用程序的两个版本,但是一个映射到/,另一个映射到/ experimental(不是真实姓名,但足够接近).

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

第一个URL已经暴露给一些beta用户,因此需要保持一定的稳定性.第二个将包含实验代码,只有用户进入/实验将会看到.我们没有使用其他服务器或不同端口的选项.

我以前通过/映射到IIS中的站点下的站点,然后将第二个站点添加为其下的应用程序,并将其别名化为/ site2来实现此目的.

服务器站点默认网站<=物理路径映射到第一个版本和//Application1 <=嵌套应用程序映射到第二个版本和/ experimental

但是,这似乎很草率.使用重写规则或使用ARR执行此操作会更清晰吗?如果是这样,怎么样?

谢谢!

Geo*_*ath 13

ARR和重写规则的组合将很好地解决这个问题.以下是要遵循的步骤:

  1. 下载并安装ARR http://www.iis.net/download/ApplicationRequestRouting
  2. 在IIS管理器中,在Connections窗格中选择您的计算机,双击IIS部分中的Application Request Routing功能,单击Actions窗格中的"Server Proxy"链接,然后选中"Enable proxy"复选框并选择Apply.行动.
  3. 更改两个现有网站的绑定,例如,将已发布的网站绑定到端口81,将实验网站绑定到端口82.
  4. 创建一个新的网站和应用程序池,并将其绑定到http:*:80:.将其命名为"默认网站".将其物理路径指向"%SystemDrive%\ inetpub\DefaultWebSite"
  5. 为"默认"网站创建一个web.config文件,并在那里写下您的路由规则:

    <rules>
        <rule name="Reverse Proxy for Experimental" stopProcessing="true">
            <match url="^.*/experimental/.*" />
            <action type="Rewrite" url="http://{HTTP_HOST}:82/{R:0}" />
        </rule>
        <rule name="Reverse Proxy for Release" stopProcessing="true">
            <match url=".*" />
            <action type="Rewrite" url="http://{HTTP_HOST}:81/{R:0}" />
        </rule>
    </rules>
    
    Run Code Online (Sandbox Code Playgroud)
  6. 你可能不得不在一定程度上改写你的重写规则,你可以在IIS上使用URL重写模块applet进行实验,并在这里阅读更多相关内容:http://learn.iis.net/page.aspx/500/testing-rewrite-规则模式/ 有关进一步的帮助,请务必浏览Ruslan Yakushev的博客:http://ruslany.net/

这将为您提供三个完全独立的网站,可通过端口80上的单个外观进行访问(当然,如果您需要,您可以直接在端口81和82上点击每个网站:) http://localhost:81/default.aspx.