13

1 つの ASP.net Web アプリケーションの 2 つのバージョンを同じイントラネット サーバーとポート番号で実行できるようにする必要がありますが、一方は / にマップされ、もう一方は /experimental にマップされます (実際の名前ではありませんが、十分に近いものです)。

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

最初の URL はすでに一部のベータ ユーザーに公開されているため、ある程度安定した状態を維持する必要があります。2 番目のコードには、/experimental にアクセスするユーザーのみが表示される実験的なコードが含まれます。別のサーバーまたは別のポートを使用するオプションはありません。

以前、IIS の [サイト] の下にあるサイトに / をマップし、その下に 2 番目のサイトをアプリケーションとして追加して、/site2 にエイリアスすることでこれを実現しました。

サーバー サイトの既定の Web サイト <= 最初のバージョンにマップされた物理パスおよび // Application1 <= 2 番目のバージョンにマップされたネストされたアプリケーションおよび /experimental

しかし、これはずさんなようです。書き換えルールまたはARRでこれを行う方がきれいですか? もしそうなら、どのように?

ありがとう!

4

2 に答える 2

13

ARR と書き換えルールを組み合わせることで、これをうまく解決できます。手順は次のとおりです。

  1. ARR http://www.iis.net/download/ApplicationRequestRoutingをダウンロードしてインストールします
  2. IIS マネージャーで、[接続] ペインでマシンを選択し、IIS セクションで [アプリケーション リクエスト ルーティング] 機能をダブルクリックし、[操作] ペインで [サーバー プロキシ] リンクをクリックしてから、[プロキシを有効にする] チェックボックスをオンにして、[適用] を選択します。アクション。
  3. 2 つの既存の Web サイトのバインドを変更します。たとえば、リリースされた Web サイトをポート 81 にバインドし、Experimental Web サイトをポート 82 にバインドします。
  4. 新しい Web サイトとアプリ プールを作成し、それを にバインドしhttp:*:80:ます。「既定の Web サイト」という名前を付けます。その物理パスを「%SystemDrive%\inetpub\DefaultWebSite」に向ける
  5. "Default" Web サイト用の 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>
    
  6. 書き換えルールをいじる必要があるかもしれません。IIS で URL 書き換えモジュール アプレットを使用して実験できます。詳細については、http: //learn.iis.net/page.aspx/500/testing-rewrite-を参照してください。 rule-patterns/ さらにヘルプが必要な場合は、Ruslan Yakushev のブログ ( http://ruslany.net/ ) を参照してください。

これにより、ポート 80 の単一のファサードを介してアクセス可能な 3 つの完全に独立した Web サイトが提供されます (もちろん、必要に応じて、ポート 81 および 82 で各 Web サイトに直接アクセスすることもできます: http://localhost:81/default.aspxたとえば)。

于 2011-08-17T05:31:54.133 に答える
3

test1.organization.com と beta1.organization.com など、別のサブドメインでサイトの 1 つを実行できますか? その場合は、両方を IIS の最上位 Web サイトとして設定し、各サイト バインディングでホスト名を設定して、両方を同じ IP アドレスとポートで実行できるようにします。

于 2011-08-17T02:10:53.803 に答える