22

Вопрос по crystal-reports, c#, asp.net-mvc – undefined

Я рассмотрел похожие вопросы по SO, но, насколько я могу судить, ничто не соответствует моей проблеме.

Сообщение об исключении:

Could not load file or assembly 'CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system cannot find the file specified.

Файл находится в моем GAC. Я занимаюсь разработкой на 32-битной машине (Windows 7) под управлением VS2010, все .NET4. Целевым хостингом является 64-битный Win 2008 R2. Моя локальная машина имеет установку CR для VS2010; хост-машина имеет 64-битное время выполнения для VS2010. Я компилирую весь свой код в «Любой процессор» режим для этого веб-приложения.

Я поражаюсь, что не могу найти файл в GAC. Это приложение IIS; есть ли какая-то проблема с разрешениями? Я думаю, что IIS будет иметь доступ к GAC.

Некоторые предложения о том, что делать, будут оценены.

  • Все мои проекты уже используют профиль 4.0; Я никогда не имел большого успеха с профилем клиента (не знаю, почему это по умолчанию для любого проекта). Я проверю настройки взаимодействия завтра утром.

    от Jeremy Holovacs
  • Все мои ссылки уже настроены так, чтобы не вставлять Interop Types.

    от Jeremy Holovacs
  • ах извините стоит попробовать

    от
  • Он должен работать без установки среды выполнения. Каково решение, если ваш веб-сайт работает на облачном сервере, и у вас нет доступа к рабочему столу? Как насчет юнит-тестирования?

    от
  • Мой случай был заявлением WPF. Пришлось отключить «32-битное предпочтение» опция в настройках проекта.

    от
  • Или альтернативно: C: \ inetpub \ AdminScripts \ adsutil.vbs SET w3svc / AppPools / Enable32bitAppOnWin64 0

    от
  • Ну, файл с этим токеном открытого ключа существует в GAC, в точности как описано. Я не понимаю, почему мое веб-приложение не может его найти.

    от Jeremy Holovacs
  • В некоторых сторонних библиотеках, с которыми я работал, PublicKeyToken отличается для 32-битной и 64-битной версий. Если это работает на одной машине, но не на другой, это может быть где-то посмотреть. это только предположение, хотя ...

    от David
  • 14

    Оказывается

    ответ был смехотворно простым, но загадочным, почему это было необходимо.

    В диспетчере IIS на сервере я установил пул приложений для своего веб-приложения, чтобы он не разрешал 32-разрядные сборки.

    Кажется, в 64-битной системе предполагается, что вам нужна 32-битная сборка. Bizarre.

  • 2

    Вам просто нужно установить

    Время выполнения отчета Crystal Report загрузка на сервере развертывания. Если проблема все еще появляется, поместите папку проверки asp_client в основную папку вашего проекта.

  • 2

    Что касается 64-битной системы

    желающей 32-битной поддержки. Я не нахожу это настолько странным:

    Хотя развертывание выполняется в 64-битной системе, это не означает, что все ссылочные сборки обязательно являются 64-битными сборками Crystal Reports. В дополнение к этому сборки Crystal Reports в основном являются просто оболочками для коллекции устаревших библиотек DLL, на которых они основаны. Многие 32-разрядные библиотеки DLL требуются для сборки, на которую ссылаются в первую очередь. Сообщение об ошибке «не удается загрузить сборку» включает в себя эти библиотеки DLL, а также. Чтобы наглядно увидеть, что это такое, перейдите на www.dependencywalker.com и запустите «Зависит». в рассматриваемой сборке непосредственно на этом сервере IIS.

  • 3

    net с профиля клиента на

    1) Измените свой профиль ..Net Framework 4.0 http://msdn.microsoft.com/en-us/library/bb398202.aspx

    2) Проверьте свой флаг Embed Interop Types

    Embed Interop Types flag http://weblogs.asp.net/cazzu/archive/2011/03/11/check-your-embed-interop-types-flag-when-doing-visual-studio-extensibility-work.aspx