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

StackOverflow https://stackoverflow.com/questions/638925

  •  11-07-2019
  •  | 
  •  

Вопрос

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

  

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

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

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

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

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

Это было полезно?

Решение

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

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

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

<Ол>
  • Остановите службы IIS на сервере примерно на минуту.

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

  • Публикация и загрузка моего сайта в настроенный виртуальный каталог.

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

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

    Однако, чтобы ответить на ваш основной вопрос, есть два способа «обратного инжиниринга». DLL:

    <Ол>
  • Загрузите его в ILDASM и проверьте содержащиеся в нем классы.
  • Используйте Reflector для сохранения всех файлов классов, содержащихся в DLL, в папку.
  • Однако я сомневаюсь, что это решит вашу проблему, потому что каждая dll может содержать много файлов классов, и у вас не будет подсказки относительно того, «какая страница ASPX ищет эту dll».

    Другие советы

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top