我们需要能够在同一个Intranet服务器和端口号上运行一个ASP.net Web应用程序的两个版本,但是一个映射到/,另一个映射到/ experimental(不是真实姓名,但足够接近) 。
C:\ inetpub \ wwwroot \ Version1 => http://test1.organization.com/ C:\ inetpub \ wwwroot \ Version2 => http://test1.organization.com/experimental
第一个网址已经向某些测试用户公开过,因此需要保持一定的稳定性。第二个将包含实验代码,只有用户进入/实验将会看到。我们无法选择使用其他服务器或其他端口。
我在过去通过/映射到IIS中的站点下的站点,然后将第二个站点添加为其下的应用程序,并将其别名化为/ site2来实现此目的。
服务器 网站 默认网站< =物理路径映射到第一个版本和/ / Application1< =嵌套应用程序映射到第二版和/ experimental
然而,这似乎很草率。使用重写规则或使用ARR执行此操作会更清晰吗?如果是这样,怎么样?
谢谢!
答案 0 :(得分:13)
ARR和重写规则的组合将很好地解决这个问题。以下是要遵循的步骤:
http:*:80:
。将其命名为“默认网站”。将其物理路径指向“%SystemDrive%\ inetpub \ DefaultWebSite”为“默认”网站创建一个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>
您可能需要稍微改编一下您的重写规则,您可以在IIS上使用URL重写模块小程序进行试验,并在此处阅读更多相关信息:http://learn.iis.net/page.aspx/500/testing-rewrite-rule-patterns/如需进一步帮助,请务必浏览Ruslan Yakushev's博客:http://ruslany.net/
这将为您提供三个完全独立的网站,可通过端口80上的单个外观进行访问(当然,如果您需要:http://localhost:81/default.aspx
,您可以直接在端口81和82上点击每个网站)。
答案 1 :(得分:3)
你可以在不同的子域运行其中一个站点,比如test1.organization.com和beta1.organization.com吗?如果是这样,那么您可以将它们设置为IIS中的顶级网站,并在每个站点绑定上设置主机名,以便它们可以在相同的IP地址和端口上运行。