Как определить, на какую страницу ссылается dll в предварительно скомпилированном сайте ASP.NET - PullRequest
1 голос
/ 12 марта 2009

Я использую предварительно скомпилированный сайт ASP.NET 2.0 (т.е. скопирован на сервер с помощью функции «Построить-> Опубликовать веб-сайт» в Visual Studio 2005). Я перехватываю и регистрирую все ошибки, которые обычно достаточно подробны, но в последнее время я получаю следующую ошибку без какой-либо другой информации:

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 12 марта 2009

Существует ли упомянутая 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».

0 голосов
/ 12 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...