1

コンパイル済みのASP.NET2.0サイトを使用しています(つまり、Visual Studio2005の[ビルド]->[Webサイトの公開]機能を使用してサーバーにコピーします)。私は通常非常に詳細なすべてのエラーをキャッチしてログに記録しますが、最近、他の情報なしで次のエラーが発生しています。

アセンブリ'App-Web-rp2eml-j'を読み込めませんでした。ページにアクセスする前に、コンパイルされていることを確認してください。

これで、その'App-Web-rp2eml-j'ファイル、プリコンパイルされたサイト用に作成されたbinフォルダー内のdllになります。私の主な質問は、どのaspxページがそのdllを探しているかをどのように知るかです。サイトを再公開し、サイトを完全に消去して再公開しようとしましたが、問題は解決しません。

問題をグーグルで検索する場合、このエラーメッセージに関するほとんどの回答は、IISが1.1ではなくASP.NET2.0を使用するように設定されていることを確認することに集中しています。これは私の問題ではありません。

注1:サイトはすべて機能しているようですが、明らかに(少なくとも)壊れているページが1つあり、見つけることができません。

注2:上記のファイル名にはダッシュではなくアンダースコアを付ける必要がありますが、SOのマークアップにより、アンダースコア間のテキストがイタリックに変更されます。

4

2 に答える 2

2

上記のdllはbinディレクトリに存在しますか?あなたはその部分を斜体にしたので、そうではないと思います。これは、エラーが一時ファイルフォルダ内のdllを参照していることを意味している可能性があります。

この問題は、ASP.NET一時ファイルフォルダー内の1つ以上のdllが破損している場合に発生する可能性があります。仮想ディレクトリにあるdllに変更がない場合、ASP.NETはここでファイルを更新しないことがあります。それは私のサーバーで時々起こります。

私の解決策は次のとおりです。

  1. サーバー上のIISサービスを1分ほど停止します。

  2. ASP.NET一時ファイルフォルダー(通常は "%windir%\ Microsoft.NET \ Framework \\ Temporary ASP.NET Files \ MyApplicationName"にあります)に移動し、フォルダー内のすべてのファイルをクリアします。

  3. 自分のサイトを公開して、構成された仮想ディレクトリにアップロードします。

  4. IISおよびその他のサービスを再起動します。

この単純な4ステップのプロセスは、過去に私にとって非常にうまく機能しており、試してみる価値があるかもしれません。

ただし、基本的な質問に答えるには、dllを「リバースエンジニアリング」する方法が2つあります。

  1. それをILDASMにロードし、含まれているクラスを確認します。
  2. Reflectorを使用して、dllに含まれるすべてのクラスファイルをフォルダに保存します。

ただし、各dllに多くのクラスファイルが含まれている可能性があり、「どのASPXページがそのdllを探しているか」についての手がかりがないため、これで問題が解決するかどうかは疑問です。

于 2009-03-12T14:57:37.737 に答える
0

たぶん、Global.asaxイベントApplication_OnErrorでエラーに関するより詳細な情報をキャッチできるので、スタックトレースを監視できます。

于 2009-03-12T14:45:17.080 に答える