Странная ошибка GAC в приложении ASP.Net - PullRequest
0 голосов
/ 19 ноября 2009

У меня странный сбой при попытке просмотра моего сайта в 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 ]

1 голос
/ 20 ноября 2009

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

OR

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

0 голосов
/ 15 января 2010

Вы можете попробовать удалить ссылки на эту 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.

0 голосов
/ 20 ноября 2009

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

...