Как определить, на какую страницу ссылается dll в предварительно скомпилированном сайте ASP.NET

Я использую предварительно скомпилированный сайт ASP.NET 2.0 (т. Е. Скопировал на сервер с помощью функции "Build->Publish Web Site" в Visual Studio 2005). Я перехватываю и регистрирую все ошибки, которые обычно достаточно подробны, но в последнее время я получаю следующую ошибку без какой-либо другой информации:

Не удалось загрузить сборку App-Web-rp2eml-j. Убедитесь, что он скомпилирован, прежде чем получить доступ к странице.

Теперь этот файл 'App-Web-rp2eml-j' должен быть DLL в моей папке bin, которая была создана для предварительно скомпилированного сайта. Мой главный вопрос, как мне сказать, что ASPX страница ищет эту DLL? Я пытался переиздать сайт, и даже полностью уничтожить сайт и переиздать, но проблема не исчезла.

При поиске проблемы в Google большинство ответов об этом сообщении об ошибке сосредотачивается на том, чтобы убедиться, что IIS настроен на использование ASP.NET 2.0 вместо 1.1. Это не моя проблема.

ПРИМЕЧАНИЕ 1. Кажется, что все работает на сайте, но, очевидно, есть (по крайней мере) одна сломанная страница, которую я не могу найти.

ПРИМЕЧАНИЕ 2: имя файла выше должно иметь подчеркивания вместо черточек, но разметка SO меняет текст между подчеркиваний на курсив.

2 ответа

Решение

Существует ли упомянутая DLL в вашем каталоге bin? Вы выделили эту часть курсивом, поэтому я подозреваю, что это не так. Это может означать, что ошибка относится к DLL в папке временных файлов.

Эта проблема может возникнуть, если один или несколько библиотек в папке временных файлов ASP.NET повреждены. Иногда ASP.NET не обновляет файлы здесь, если нет никаких изменений в DLL, находящейся в виртуальном каталоге. Это происходит время от времени на моем сервере.

Мое решение заключается в следующем:

  1. Остановите службы IIS на сервере на минуту или около того.

  2. Перейдите в папку "Временные файлы ASP.NET" (обычно она находится в "%windir%\Microsoft.NET\Framework\\Temporary ASP.NET Files\MyApplicationName") и очистите все файлы в этой папке.

  3. Опубликуйте и загрузите мой сайт в настроенный виртуальный каталог.

  4. Перезапустите IIS и другие службы.

Этот простой четырехэтапный процесс очень хорошо работал для меня в прошлом и, возможно, стоит попробовать для вас.

Чтобы ответить на ваш основной вопрос, однако, есть два способа "перепроектировать" dll:

  1. Загрузите его в ILDASM и проверьте содержащиеся в нем классы.
  2. Используйте Reflector, чтобы сохранить все файлы классов, содержащиеся в DLL, в папку.

Тем не менее, я сомневаюсь, что это решит вашу проблему, потому что каждая DLL может содержать много файлов классов, и вы не будете иметь понятия о том, "какая страница ASPX ищет эту DLL".

Может быть, вы можете получить более подробную информацию об ошибке с помощью события Global.asax Application_OnError, чтобы вы могли наблюдать трассировку стека.

Другие вопросы по тегам