2

.NET 4 Web フォーム サイトであるサイト (s1) の 1 つを指すクライアント ドメイン名 (d1) があります。クライアントは、別のドメイン (d2) にサブドメインをセットアップし、これを s1 IP アドレスでポイントしました。d2 ドメインが使用され、URL にページがない場合、s1 で特定のページを提供する必要があります。可能であれば、リダイレクトなしでこれを達成したいと思います。

例えば

example.com -> サイト

x.example.net -> サイト /thepage.aspx (ただし、アドレス バーの URL は x.example.net/thepage.aspx ではなく、x.example.net のままにしておきます)。

開始リクエストでServer.Transferを実行しようとしましたが、これが機能している間、ポストバックは機能しませんでした(転送が原因だと思いますが、開始リクエストでポストバックを検出する方法がわからないため、転送されません) .

ルーティングを活用する方法があるかもしれないと思ったが、パスがない (ドメイン名だけ) ため、このように設定されたルートは、以前のルートに引っかからない場合、すべてのリクエストをこのページにルーティングする可能性があります。理想)。

つまり、要するに、global.asax の Application_BeginRequest でポストバックを検出して、最初の要求のみを転送する方法はありますか? または、リダイレクトせずにドメイン名をページにマッピングする方法はありますか? これを達成するために私が知らない機能はありますか?

4

2 に答える 2

0

これを行うために書き換えルールを設定できます。次のルールは、ホストが x.example.net と一致する場合にのみ、ルート Url を /thepage.aspx に書き換えます。

RewriteCond  %{HTTP_HOST} (^x.example.net$)
RewriteRule ^$ / [NC,L]

IIS7 を使用している場合: URL Rewriteを使用してこれを行うことができます。

URL書き換え

IIS6 を使用している場合: サーバーでISAPI Rewriteをセットアップできます。

設定によっては、2 行目にスラッシュが含まれる場合があります。

RewriteRule ^/$ /thepage.aspx [NC,L]

于 2012-10-25T19:47:21.130 に答える
0

着信要求を調べる HttpModule を作成できます。要求が x.domain2.com に対するものである場合、次のように thepage.aspx を呼び出すことができます。

Type page_type = BuildManager.GetCompiledType ("~/thepage.aspx");
Page page = (Page) Activator.CreateInstance (page_type);
page.ProcessRequest (Context);
于 2012-10-25T13:57:00.237 に答える