Win2000のIIS5からWinServer 200864ビットのIIS7に移行するマルチテナントWebサイトがあります。
すべてのテナントには、アプリケーションサーバーのIPアドレスを指す独自のドメイン名があります。
次に、ドメイン名ごとにIISにサイトを設定し、物理パスを(クラシック)ASPファイルが配置されているパスに設定します。
サイトごとに、ASPファイルを実行し、クエリ文字列でCompanyIDを渡すデフォルトのドキュメントを設定します。
例えば。
www.site1.comはConnect.asp?CompanyID = 425を呼び出します
www.site2.comはConnect.asp?CompanyID = 426を呼び出します
等
IIS7でこれを実現するために、ASPファイルのルート物理パスに次のようなweb.configファイルがあります:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="www.site1.com">
<system.webServer>
<defaultDocument>
<files>
<add value="Connect.asp?CompanyID=425" />
</files>
</defaultDocument>
</system.webServer>
</location>
<!-- a location entry for every other website here... -->
<location path=".">
<system.webServer>
<defaultDocument>
<files>
<add value="Connect.asp?CompanyID=1" />
</files>
</defaultDocument>
</system.webServer>
</location>
</configuration>
これは機能していません-すべてのサイトがCompanyID = 1エントリに移動します。
誰かが私が間違っていることを指摘できますか?
パス属性をに設定してみました
いずれにせよ、それは機能しません。
私は解決策を見つけました iisフォーラムのこのリンクで
コマンドラインから次のように実行することで、web.configファイルではなくapplicationhost.configのロケーションタグに設定を配置できます。
%windir%\ system32\inetsrv\appcmd.exe set config "MySite1" -section:system.webServer/defaultDocument- + files。[value = 'newdoc.aspx'] -commitpath:apphost
したがって、上記で投稿した例では、サイトごとにこのコマンドを実行しました
%windir%\ system32\inetsrv\appcmd.exe set config "MySite1-www.site1.com" -section:system.webServer/defaultDocument- + files。[value = 'Connect.asp?CompanyID = 425'] -commitpath: apphost
そして
%windir%\ system32\inetsrv\appcmd.exe set config "MySite2-www.site2.com" -section:system.webServer/defaultDocument- + files。[value = 'Connect.asp?CompanyID = 426'] -commitpath: apphost
IIS7管理プログラムで2つのサイトのデフォルトのドキュメントプログラムに移動すると、2つのサイトに設定されているさまざまなデフォルトのドキュメントが表示されます。