2016-12-22 23 views
0

単一のIISサイトで複数のweb.configを処理する方法に関するアドバイスを探しています。 IISでの経験はほとんどありませんが、これを理解する必要があります。IISサイトの継承

背景: 1)私たちは、私たちは私たちのイントラネットにiFrameに、私たちのイントラネットのURLにバックをピギーしたいさまざまなサーバ上のカスタム・アプリケーション・コードを持っている)IIS 7.5 2つのサイト上で実行されているイントラネット・アプリケーションを持っています。 (intranet.com/custom/blah.aspx) 3)これを達成するために、IISイントラネットサイト内に仮想ディレクトリを作成しました。残念ながら、これはイントラネットのweb.configとさまざまなカスタムアプリケーションのweb.configsとの継承/競合を引き起こしているようです。

私の最初の考えは、私たちのIISイントラネットサイトから独自のアプリケーションを削除して新しいIISサイトを作成する必要があるかもしれないということですが、まだ可能性がありますか同じURL。 アイデア

追加の詳細/説明が必要な場合はお知らせください。

+0

別々のサイトとして、それらを設定し、それはあなたが欲しいものだ場合は、リバースプロキシでURLを再編成します。 –

+0

ありがとうLex - リバースプロキシでURLを再編成するにはどうすればいいですか? –

答えて

1

私の意見では、既存の設定、つまりイントラネットアプリケーションの仮想ディレクトリとしてカスタムアプリケーションを使用することができます。ただ、web.configの競合を解決する必要があります。これらの競合を解決する方法は2つあります。

  1. イントラネットアプリケーションのweb.configに、子ディレクトリの設定をプッシュしないように指示します。これを達成する方法は、使用場所タグです。例えば 親アプリが接続文字列を子ディレクトリにプッシュしないようにするには、次の構文を使用します。 <location path="." inheritInChildApplications="false"> <connectionStrings> </connectionStrings> </location> 競合するすべての設定をlocation要素にラップすると、子ディレクトリにプッシュされません。仮想ディレクトリだけでなく、イントラネットアプリケーションの子ディレクトリへの継承を停止するので、ここで注意する必要があります。

  2. カスタムアプリケーションのweb.configに、親ディレクトリの設定を継承しないように指示します。これを達成する方法は、使用<clear/>要素です。 カスタムアプリケーションのweb.configでは、これらの競合するすべての設定について、最初に親からの設定を消去し、追加する特定の設定を追加します。例えば <connectionStrings> <clear /> <add your specific connection string> <connectionStrings>

+0

ありがとうPankaj - アップグレードを行うたびにイントラネットのweb.configが上書きされるので、2番目のオプションを試してみましょう。あなたが参照したイントラネット内のダウンストリームの影響を恐れています。提案していただきありがとうございます! –

+0

パンカイ、私はそれを試してみましたが、うまくいきませんでした。まだ継承している –