2012-04-12 32 views
2

非常に特定のページでこの問題が発生しており、修正方法がわかりません。 私はすでにいくつかの質問(例えばASP.NET corrupt assembly "Could not load file or assembly App_Web_*"Could not load file or assembly App_Web_xxxxxxxx or one of its dependenciesなど)を見つけて解決策を試しましたが、役に立たなかった。要約するとプリコンパイル済みのASP.NET WebサイトプロジェクトでファイルまたはアセンブリApp_Web_ *をロードできませんでした

、ここで私が試したものです:

  • 設定batch="false" numRecompilesBeforeAppRestart="50" web.configファイルに

  • このウェブサイトASPをクリア

  • をホストするIIS Webサイトを再起動。 NETテンポラリファイル%windir%\Framework64\v4.0.30319\Temporary ASP.NET Files

  • リプレイド

...上記のいずれかの組み合わせであっても、役に立たない。私はVSからサイトを実行しようとすると、事前コンパイルせずにWebサイトを展開するときに完全に正常に動作します。ここで

は的環境のいくつかの仕様です:

  • プリコンパイルは、Web配置プロジェクトを介して行われます。 TFSまたは私はプリコンパイルをしたかは関係ありません:パイプラインモードは、.NET 4.0

に統合されています。問題が解決しないバージョンが4.0.30319

  • アプリケーションプールの設定がされて

  • .NETこれは私がCustomer.aspxを開いたときに発生する特定のエラー、次のとおりです。

    Could not load file or assembly 'App_Web_qxcfa0wv, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

    このページではUserManagement.ascxというコントロールが登録されており、~/Controls/UserManagement.ascxにあります。

    このコントロールには、~/Controls/Dialogs/UserControl.ascxにあるUserDialog.ascxという別のコントロールが登録されています。

    最後のコントロールは、ユーザーのデータをカプセル化する~/Controls/User.ascxというコントロールを使用します。それ以上の依存関係はありません。

    スタックトレースによれば、エラーはUserDialog.ascx<%@ Control ... %>ディレクティブ)の1行目にあります。

    私は迷っています。私のの推測は、~/Controls/Dialogs/UserDialog.ascxが親フォルダにあるコントロールを必要とするため、動作しないということです。その結果、実行時にいくつかの古い参照が発生します。最初のSO質問の問題記述のようなもの。

    ~/Controls/User.ascxコントロールを除外することでテストすることはできません。そのコントロールが他のコントロールも登録していないにもかかわらず、~/Control/UserDialog.ascxで使用される別のコントロールで循環参照エラーが発生するためです。ほとんどの他のコントロールではである名前空間登録のみです。

    私は循環参照とエラーが関連していると言いたいと思いますが、どういう意味があるのでしょうか。依存グラフ全体を描画する必要はありません。

    アイデア?

    ありがとうございます!

  • +0

    は '〜/コントロールを/'ず、かつ/または '〜/Controls/Dialogs/'ディレクトリがサーバ上に存在しますか? – robertc

    +0

    @robertc:うーん、私はそれをチェックしなかった。どうやら、 '〜/ Controls /'フォルダは存在しますが、 '〜/ Controls/Dialogs /'フォルダは存在しません。奇妙なのは '〜/ Controls/Lists /'フォルダー*が存在するからですが、それが構築された唯一の理由はASPXページが入っているからです。 VS2010では '〜/ Controls/Dialogs /'フォルダにはASCXファイルしか含まれていないので、なぜビルドには含まれていないのか分かります... – user849924

    +0

    [私の似た質問]を見てください(http://stackoverflow.com/questions/5885534)。/asp-net-user-controls-in-a-child-directory-directory-not-found-error) - 'ascx'ファイルのみを含む各ディレクトリに空の' placeholder.html'ファイルを作成しました。ディレクトリーはサーバー上に作成されます。 – robertc

    答えて

    1

    真剣にWebプロジェクトに変換してください。これは、Webサイトテンプレートでライブラリとユーザーコントロールを使用する場合の既知の問題です。私はそれをここにまとめました:

    ASP.NET: Web Site versus Web Application Project

    リックシュトラールのブログに

    詳しい情報(コメントを読む):

    Understanding Page Inheritance in ASP.NET 2.0

    +1

    ありがとう!私はそれがどのようになったかをあなたに知らせます。私たちが一般的にWebアプリケーションプロジェクトを使用しないのは、Webサイトモデルが持っている編集と継続のためですが、それ以外の理由で実際に使用しない理由はありません。私はOld_App_Codeのいくつかのコントロールをもう見つけられませんが、とにかくそこから移動したいと思っていました。 – user849924

    +0

    これは最善の方法です。ウェブサイトのテンプレートの利点は、すべてのprobよりも重要です。 – IrishChieftain

    +1

    Hrm、デザイナーファイルが壊れているか、正しく更新されていないようです。私はサイト全体の検索とコントロールの置き換えを行い、Webアプリケーションを右クリックして「Webアプリケーションに変換」し、実際にはデザイナーのファイルに何も起こりそうになかった。問題のページ/コントロールに触れたときにのみ、正しく再生成されました。 私は今はまだ動作していますが、Webアプリケーションとしてはまだありません。 – user849924

    関連する問題