2009-06-16 9 views
5

仮想アプリケーションまたは仮想アプリケーションを使用して、同じアプリケーションコード(aspxページなど)を共有する2つのWebサイトを設定できますが、 .configファイル?サイトとコードは、同じIIS上で実行されている同じサーバー上に存在します。私はする必要がありますIIS 6.アプリケーションファイルを共有しているが異なるweb.configを持つ2つのASP.NETサイト

+1

2つの.configファイルの違いは何ですか?おそらく、認証と認可に関連するだけでしょうか?通常、インターネットサイトとそれを管理するイントラネットサイト間の共有など、これらのような問題を処理する他の方法を見つけることが可能です。 –

+0

唯一の違いはappSettingsです。私はコードを変更せずにこれを行うことができるかどうかを知りたいだけのことに興味がありました。 –

+0

@ Jakob-あなたはアプリの設定に何らかの種類のアプリ固有のキーを付けることでそれを行うことができますが、それでもコードを変更する必要があります。 – RichardOD

答えて

5

短い答えは、コードを1か所に保存したい場合はnoです。おそらく最良の解決策は、サイトを決定するもの(おそらくホストヘッダー?)に基づいてアプリケーションにカスタム設定ファイルをロードさせることです。

ConfigurationManager.OpenExeConfigurationのようなものが役に立ちます。

私は、1つのファイルにすべてがある設定規約を考えて、特定の種類の特定のプレフィックスを使用してGetSectionを使用して、必要な設定を取得することをお勧めします。

+0

ええ、私はこれが他のやり方でできることを知っています。私はちょうど私が既存のコードを変更することなくそれを行うことができることを望んでいた。 –

+0

短い答えは "はい"ですが、仮想ディレクトリは使用しませんが、NTFSのハードリンクは次のとおりです。https://stackoverflow.com/questions/45889661/several-asp-net-sites-that-are-sharing-application-files -but-using-different-th –

0

を使用しています

は、仮想アプリケーション内のweb.configファイルが使用されます。レイアウトが階層的である場合、web.configの継承を調べる必要があるかもしれません。

+0

私は、それぞれにweb.configが必要になるのでアプリケーションコードの2つの物理的なコピーが必要であることを付け加えてください。 – Pharabus

1

これは単に不可能です。

なぜですか?

これは、アプリケーションが物理的に存在する物理フォルダからデフォルト設定ファイルを読み込むためです。仮想ディレクトリはweb.configとは関係ありません。これは、Webサーバー(IIS)がWebサイトのルートとして特定の物理ディレクトリにマップするために使用されます。

ありがとうございました。

+1

-1 'の仮想ディレクトリはweb.configとは関係ありません。参照してください... http://msdn.microsoft.com/en-us/library/ms178685(v=vs.100).aspx#configuration_inheritance、 'サーバーが特定のWebリソースの要求を受信すると、ASP.NET要求されたURLの仮想ディレクトリパスにあるすべての構成ファイルを使用して、そのリソースの構成設定を階層的に計算します。 –

0

アプリケーションA、アプリケーションB、アプリケーションCなどがありますが、web.configファイルで定義されているいくつかの設定プロパティによって異なる点を除き、まったく同じです。

もちろんこれは可能です。最も簡単な方法は、プロジェクトをWebアプリケーションとしてセットアップし、コンパイルしてから、そのDLLをアプリケーション間で共有することです。あなたはGACを使いたいですか?

すべてのロジックが存在する共有ディレクトリを指し示すIISの個々のサイトを設定できます(またはそれぞれの仮想ディレクトリを使用します)が、app_codeフォルダを共有することはできません。

EDIT

RichardODは、上記最良の答えを持っている、と私は前に似た何かを実装しました。基本的には、web.configのリファレンスとなるカスタム設定ファイルを設定します(変更を加えるとアプリが再起動されないようにします)。このファイルはホスト名で読み込まれ、ホストごとに固有のプロパティが含まれています。

私はホストヘッダーをIISに追加し、カスタム設定ファイルにそのホストのエントリを追加します。完了しました。

1

ウェブサイトの各インスタンスごとに異なるDB接続文字列を使用するために、これは1年前にこれをやったことは間違いありません。私の推測では、のみにはインスタンス固有の設定を含むweb.configが含まれていて、これらの仮想ディレクトリのそれぞれには、ソースコードを参照するアプリケーションが含まれていたweb.config)。

したがって、私が正しく覚えていれば、特定のWebサイトでは、web.configのみを含む仮想ディレクトリを作成することができました。これの値は、その仮想ディレクトリのサブアプリケーションによって継承されます。

+0

このトリックは動作することを確認してください – Pashec

+0

クール。どのweb.configが優先されるのか気づきましたか?内側か外側か?私はそれが外側であることを思い起こさせるようです。 –

関連する問題