2

コンテンツがドメインに依存するように、1つの.NET MVCアプリケーションを持ち、異なるドメインからアクセスできるようにすることは可能ですか?

たとえば、www(dot)site1(dot)comとwww(dot)site2(dot)comはどちらも、サーバーのIPとIISの同じWebサイトを指します。そのWebサイトには、私の.NETMVCアプリケーションが存在します。ここで、どのサイト(ドメイン名)がControllerActionをトリガーしたかを知り、それに応じて行動する機能が必要です(たとえば、インデックスアクションでホームページに異なるコンテンツを表示したり、特定のサイトに割り当てられた特定のコンテンツへのアクセスを許可/防止したりします) 。

これについて何か助けていただければ幸いです。すべてのコントローラーアクション(おそらくルーティングを使用)に渡される追加のパラメーターを受け入れることができますが、より洗練されたソリューションがあれば理想的です。

4

5 に答える 5

2

そうですね、いつでもRequest.RawUrlプロパティからドメインを取得できます。

Mercerが述べたように、これらを2つの別々のWebアプリとしてデプロイする方が、より良いソリューションになります。それが不可能な場合は、ドメインをチェックしてドメインごとに異なるビューを返す、比較的一般的なものを設計しようとします。

于 2009-07-09T14:39:23.647 に答える
1

リクエストで使用されているドメイン名には、次のように簡単にアクセスできます。

switch(Request.ServerVariables("SERVER_NAME"))
{
    case "www.site1.com":
        //do something
    case "www.site2.com":
        //do something else
    default:
        //????
}

これは、Requestオブジェクトにアクセスできる場所であればどこでも実行できます。

于 2009-07-09T14:51:16.913 に答える
1

ダウンロード用のサンプルWebアプリケーションを使用してこれを行う方法についてのブログ投稿を書きました。

呼び出されているサイトを認識する抽象ベースコントローラーを使用します。この基本クラスから継承するコントローラーを作成することにより、現在のリクエストの現在の「サイト」に自動的にアクセスできます。

また、単一のデータベースからすべてのサイトをロードすることもできます。共有ホストを使用している場合、または独自のサーバーを実行している場合は、新しいデータベースを設定する必要がないため、ホスティング料金を少し節約できます。作成する各サイト。

于 2009-07-20T12:07:33.307 に答える
0

洗練されたソリューションは、2つのドメインに対して2つの展開を行い、コンテンツを分離することです。

共通のコンテンツを使用することもできますが、アプリケーション内でこれをハードコーディングせずにコンテンツを分離することは、お互いに有利な状況です。

于 2009-07-09T14:34:50.147 に答える
0

異なるデータベースを使用してデータを分離しておく場合は、セッション開始で、サーバー名変数に基づいてデータベースの1つを使用するようにアプリケーションを構成します。次に、作業中の接続文字列をユーザーのセッションに配置します。

protected void Session_Start(Object sender, EventArgs e)
{
  NameValueCollection NVCSrvElements = Request.ServerVariables;
  switch (NVCSrvElements.Get("SERVER_NAME")) 
  { 
      case "www.whatever1.com":
          Session["ConnStr"]="db1 connection string";
          break;
      case "www.whatever2.com":
          Session["ConnStr"] = "db2 connection string";
          break;
  }                  
}

次に、この接続文字列をアプリケーションの残りの部分で使用します。

于 2009-07-09T16:09:02.687 に答える