2011-10-19 3 views
2

IIS 6.0、下に仮想ディレクトリがあるルートWebサイト。IISワーカープロセス:異なるサイトが異なるバージョンを参照しているときに読み込まれるDLLはどれですか?

ルートWebサイトには、独自のbinディレクトリがあります。このディレクトリには、古いバージョンのDLLが含まれています。これは本番サイトであり、私たちはそれに触れたくありません。

例:

CSA.Network.DLL 1.3.9117.0 

仮想ディレクトリの下に例えば、これらのDLLのより新しいバージョンが含まれているそのbinディレクトリを、持っている:

CSA.Network.DLL 1.7.8221.0 

IISワーカープロセスが起動すると、それがロードされます1.3バージョンのDLL ...仮想ディレクトリ内のページを読み込んだとき、1.7もロードされますか、既にメモリに格納されているため1.3に固定されますか?

参考文献はプロジェクトリファレンスであり、特定のタイプを必要としないように設定されているため、1.3を使用して1.7をロードしようとは思われません。あれは正しいですか?ここにはどのような規則が適用されていますか?

ありがとうございます! vcsjonesとサムShilesによって

+4

サイトは、ほとんど異なるAppDomainsに読み込まれます。ロードされたアセンブリのスコープはAppDomainレベルであるため、各サイトでは独自のバージョンのアセンブリが使用されます。 – vcsjones

+3

私はvcsjonesに同意します。それでも興味がある場合は、アセンブリのバインディングログを調べるためにFusionログビューアの使用について説明している次のブログ記事を参照してください。 http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspxおよびhttp://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx –

答えて

1

コメントはすべてをカバー...しかしあらためて表明する:

  • サイトが異なるのAppDomainで実行され、その結果、DLLの異なるバージョンを取得します。
  • サイトが異なるAppPoolsで動作するように設定することができます
  • GACに同一のIDを持つアセンブリのバージョンがないことを確認してください.GACは他の場所より常に優先されます。
  • マシンまたはサイトのアセンブリにリダイレクトが設定されていないことを確認してください。
+0

悲しいことに、私は彼らがたとえ同じワーカープロセスで実行されていたとしても、異なるApp Domainsで実行されます。私のWindowsデベロッパーのルーツは次の通りです:)ありがとう! –

関連する問題