Странная ошибка GAC в приложении ASP.Net

У меня странный сбой при попытке просмотра моего сайта под IIS. Если я создаю новое приложение веб-сайта ASP.Net, не изменяю его вообще и не запускаю (F5), веб-страница отображается с ошибкой:

Compilation Error
Description: An error occurred during the compilation of a resource required to
service this request. Please review the following specific error details and modify
your source code appropriately.

Compiler Error Message: CE29: (CE29) Unable to load assembly C:\Windows\assembly\GAC_64
\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll Not
a valid .NET executable (Offset and length were out of bounds for the array or count
is greater than the number of elements from index to the end of the source collection.)

Похоже, проблема конфигурации.Net, но я не знаю, как ее исправить. У меня установлен.Net 3.5 SP1 и IIS 7.0, работающие на Vista Home Premium 64-bit. Сайт создан с использованием Delphi Prism, который работает в оболочке Visual Studio 2008. Я гуглил, гуглял и гуглял, но ничего. Любая помощь с благодарностью!

3 ответа

Добавьте System.EnterpriseServices(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG) в вашу ссылку, чтобы решить вашу проблему.

ИЛИ ЖЕ

Удалить ссылку из web.config, если вы не используете это.

Вы можете попробовать удалить ссылки на эту DLL, но Prism, вероятно, поместил ее туда по причине. Есть много возможных причин. Возможно, вы указали поддержку транзакций на уровне страницы или используете COM-взаимодействие. Вы можете определить причину, временно удалив ссылку и выполнив полное перестроение, чтобы увидеть, на что жалуется компилятор.

Безотносительно причины, если вы обнаружите, что вам все еще нужна эта сборка, вам просто нужно будет найти нужную в нужном месте, чтобы IIS мог ее загрузить.

Попробуйте открыть GAC в проводнике Windows. Я не пользуюсь Vista, поэтому терпите меня, если ваши шаги отличаются от моих. Нажмите START, затем введите c:\windows\assembly. Вам, очевидно, понадобится разрешение для просмотра / управления этой папкой. Найдите нужную сборку и посмотрите доступные версии. Похоже, что подсистема.NET пытается сделать ваше приложение 64-битным и требует 64-битную версию этой сборки.

Если вы не видите соответствующую сборку в GAC (вы, вероятно, увидите другие версии), то это, вероятно, объясняет это.

Я не уверен в решении, но я мог бы попробовать две вещи: убедиться, что у вас есть 64-битная версия DLL в вашей системе, и попытаться установить ее в GAC с помощью GACUtil /i. Вы также можете попробовать перенастроить ASP.Net для IIS, используя aspnet_regiis.exe -i.

Пожалуйста, проверьте ссылки вашего проекта. Вы ссылаетесь на System.EnterpriseServices? Если нет, взгляните на файл machine.config. Может сборка там указана?

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