2012-03-05 5 views
1

私はビジュアルスタジオ2010に新しいフォームアプリケーションを作成しました。Default.aspxAbout.aspxの2ページしかありません。私が望むのは、Visual Studio開発サーバーでアプリケーションをデバッグするときにhttp://company1.localhost:1023と入力すると、デフォルトページのメッセージがThis is default page for company1と表示されます。
注:マルチテナントは大きな言葉であり、このような単純なシナリオでは使用しないでくださいが、私の要件は単純です。私は、拡張ポイントのない各会社のアプリケーションの同じインスタンスを実行するだけです。この質問は、サブドメインをプログラムでどのように作成することもできると述べることができます。asp.net Webフォーム内のマルチテナンシー

答えて

2

この作業にはIIS(およびおそらくDNS)を正しく構成する必要があります。たとえば、すべてのサブドメインはIISの指定されたWebサイトで処理する必要があります。通常、単一のWebサイトのみが存在する場合はすべてのホストヘッダーを処理するようにIISを構成できますが、複数のWebサイトの場合、IISは通常、ホストヘッダーによって異なるように構成されています。したがって、この設定を正しく行うことが重要です。

正しいWebサイトに達すると、IISメタベースによってリソース処理が行われます。したがって、この場合、サイトの既定の構成リソースにリダイレクトされます。 resource-nameが存在する場合、extension(htm、aspx)が処理を決定します。 Aspxの拡張機能はASP.NETによって処理されます。そして、あなたがする必要があるのは、現在のホストヘッダーを検索し、それに応じて決定することだけです。たとえば、

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (request.Url.HostNameType == UriHostNameType.Dns) 
    { 
     var hostParts = Request.Url.Host.Split('.'); 
     // you may validate if sub-domain name is present or not 
     lblMessage.Text = "This is default page for " + hostParts[0]; 
    } 
} 
+0

私はこれが彼を助けるとは思わない。彼は、IISを使用しないというソリューションを求めています。私の答えは言うまでもありません。 –

+1

@CrabBucket、私はあなたがその点を逃したと思います。 WebサーバーレベルでOPを設定する必要があります - ルーティング(または任意のアプリケーション/ ISAPIレベルコード)を含むASP.NETコードは、要求がASP.NET実行時(IIS設定が必要)に正常に到達できる場合にのみ有効になります。 。 – VinayC

+0

私はその点を逃してしまった。それは異なるホストのための異なるデフォルトです。他に何かがあるはずだと思った。ありがとう - 私は私の答えを削除しています –

関連する問題