Не удалось загрузить файл или сборку App_Web_ * с предварительно скомпилированным проектом веб-сайта ASP.NET
Я получаю эту проблему на очень конкретной странице, и я не знаю, как ее исправить. Я уже нашел несколько вопросов SO (таких как испорченная сборка ASP.NET "Не удалось загрузить файл или сборку App_Web_*" и " Не удалось загрузить файл или сборку App_Web_xxxxxxxx или одну из ее зависимостей") и попробовал их решения, но безрезультатно.
Напомним, вот что я пробовал:
Задавать
batch="false" numRecompilesBeforeAppRestart="50"
в web.configПерезапущен веб-сайт IIS, на котором размещен этот веб-сайт.
Очистил временные файлы ASP.NET в
%windir%\Framework64\v4.0.30319\Temporary ASP.NET Files
Reployed
... и любая комбинация вышеперечисленного, но безрезультатно. Он прекрасно работает, когда я пытаюсь запустить сайт из VS и когда я развертываю сайт без предварительной компиляции.
Вот некоторые характеристики окружающей среды:
Предварительная компиляция выполняется в рамках проекта веб-развертывания. Неважно, если TFS или я сделал прекомпиляцию: проблема сохраняется
Версия.NET 4.0.30319
Настройки AppPool: режим конвейера интегрирован в.NET 4.0
Это конкретная ошибка, которая возникает при открытии 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
,
Этот элемент управления зарегистрировал другой элемент управления под названием UserDialog.ascx
, который находится по адресу ~/Controls/Dialogs/UserControl.ascx
,
И этот последний элемент управления использует элемент управления, называемый ~/Controls/User.ascx
который инкапсулирует данные пользователя. Больше нет никаких зависимостей.
Согласно трассировке стека, ошибка находится в строке 1 UserDialog.ascx
(The <%@ Control ... %>
Директива).
Я в недоумении. Я думаю, что это не работает, потому что ~/Controls/Dialogs/UserDialog.ascx
требует элемента управления, который находится в родительской папке, что приводит к некоторой устаревшей ссылке во время выполнения. Вроде как описание проблемы в первом вопросе SO.
Однако я не могу проверить это, просто исключив ~/Controls/User.ascx
контроль, потому что тогда я получаю ошибки круговой ссылки в другом элементе управления, который используется в ~/Control/UserDialog.ascx
даже если этот элемент управления не регистрирует другие элементы управления, либо. Только регистрация пространства имен, которая используется большинством других элементов управления.
Я бы сказал, что циклическая ссылка и ошибка связаны между собой, но я не могу точно сказать, как. Не без рисования всего графа зависимостей.
Есть идеи?
Заранее спасибо!
1 ответ
Если серьезно, конвертируйте его в веб-проект. Это известная проблема при использовании библиотек и пользовательских элементов управления с шаблоном веб-сайта. Я подвел итог здесь:
ASP.NET: веб-сайт против проекта веб-приложений
Больше информации в блоге Рика Строля (читайте комментарии):