Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在IIS 7.5的同一端口上运行两个网站?_Asp.net_Iis_Request_Asp.net Routing - Fatal编程技术网

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

Asp.net 在IIS 7.5的同一端口上运行两个网站?,asp.net,iis,request,asp.net-routing,Asp.net,Iis,Request,Asp.net Routing,我们需要能够在相同的intranet服务器和端口号上运行一个ASP.net web应用程序的两个版本,但一个映射到/,另一个映射到/实验(不是真实名称,但足够接近) C:\inetpub\wwwroot\Version1=> C:\inetpub\wwwroot\Version2=> 第一个URL已经向一些测试版用户公开,因此需要保持一定的稳定性。第二个将包含实验代码,只有前往/实验的用户才能看到。我们没有使用不同服务器或不同端口的选项 在过去,我通过将/映射到IIS中“站点”下的一个站点,然后

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

C:\inetpub\wwwroot\Version1=> C:\inetpub\wwwroot\Version2=>

第一个URL已经向一些测试版用户公开,因此需要保持一定的稳定性。第二个将包含实验代码,只有前往/实验的用户才能看到。我们没有使用不同服务器或不同端口的选项

在过去,我通过将/映射到IIS中“站点”下的一个站点,然后将第二个站点作为应用程序添加到其下,并将其别名为/site2来实现这一点

服务器 地点
默认网站您能否在不同的子域运行其中一个网站,例如test1.organization.com和beta1.organization.com?如果是这样,则可以在IIS中将它们都设置为顶级网站,并在每个网站绑定上设置主机名,以便它们都可以在相同的IP地址和端口上运行

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

  • 下载并安装ARR
  • 在IIS管理器中,在连接窗格中选择您的计算机,双击IIS部分中的应用程序请求路由功能,单击操作窗格中的“服务器代理”链接,然后选中“启用代理”复选框并选择应用操作
  • 更改两个现有网站的绑定,例如,将发布的网站绑定到端口81,将实验网站绑定到端口82
  • 创建新网站和应用程序池,并将其绑定到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>
    
    
    如需进一步帮助,请确保并浏览Ruslan Yakushev的博客:


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

    谢谢您的回复。不,我们不能那样做。DNS人员不会让我们为像我们这样的临时托管情况注册一个新的子域。我的想法是做默认的(一个顶级站点,一个嵌套的应用程序)或者一个顶级站点,有两个虚拟目录或者嵌套的应用程序,还有一些路由。这太糟糕了。特别是因为您不必注册子域,只需让某人添加一个DNS条目(换句话说,它是免费的)。=]严肃地说,如果使用嵌套方法,需要注意的一点是,除非禁用它,否则嵌套应用程序将从父级继承web.config设置(有关详细信息,请参见此处)。这就是我喜欢避免嵌套应用程序的原因之一。对不起,我应该用一个比注册更轻的术语。在过去,这曾经是一个电话给某人;现在它需要变更控制会议和签准。我们唯一能控制的就是网络服务器本身。是的,我知道这是怎么回事。可能需要40个小时的会议才能做出一个真正需要15秒的改变。有鉴于此,尝试一种不同的方法当然是有意义的。您已经尝试过的嵌套方法是我所知道的实现这一点的唯一明智的方法。无论如何,您都不能定义映射到
    test1.organization.com/experimental
    的网站,因为该网站定义为第一个
    /
    之前的所有内容。第一个
    /
    后面的第一部分是应用程序或根应用程序下的子目录。感谢您的响应。确认一下:在这种情况下,如果我将site1绑定到80,site2绑定到81,site3绑定到82,我应该能够将site1/default.aspx的所有请求路由到site2/default.aspx,并将site1/test/default.aspx的所有请求路由到site3/default.aspx?@Geoffrey McGrath感谢您的详细指导。但是我没能做到。我的规则是-,它总是让我想到。Don,对于您编写的规则,您的测试URL必须包含一个尾随斜杠,并且可以选择在尾随斜杠之后添加其他数据。这两个例子应该适用于您:(1)(2)