Хобрук: Ваш путь к мастерству в программировании

Ошибка сборки регистра ASP.NET

Я ПУТЬ не в своей лиге, поэтому прошу прощения, если задаю повторяющийся вопрос, но я не знаю, с чего начать.

Недавно я перенес базу данных SQL с SERVER1, где она была размещена совместно с IIS, на котором размещен веб-интерфейс для доступа к базе данных, на SERVER2. Веб-интерфейс теперь правильно обращается к базе данных, и с помощью некоторых функций приложения я могу правильно обращаться к данным без ошибок. Однако, когда я пытаюсь запустить отчет, я получаю эту ошибку:

Как это исправить?

Server Error in '/' Application.
--------------------------------------------------------------------------------

Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load file or assembly 'Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Source Error: 


Line 5:      Namespace="AjaxControlToolkit" 
Line 6:      TagPrefix="ajaxToolkit" %>
Line 7:  <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Line 8:      Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
Line 9:  


Source File: /source/Report5.aspx    Line: 7 

Assembly Load Trace: The following information can be helpful to determine why the assembly 'Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' could not be loaded.


WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.3603; ASP.NET Version:2.0.50727.4028 

ОБНОВЛЕНИЕ

Я включил ведение журнала и получил более подробную ошибку:

=== Pre-bind state information ===
LOG: User = AURORAFCS\raj
LOG: DisplayName = Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/Family/
LOG: Initial PrivatePath = C:\Family\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Family\web.config
LOG: Using host configuration file: \\?\c:\windows\microsoft.net\framework\v2.0.50727\aspnet.config
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms.EXE.
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.EXE.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms.EXE.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.EXE.

ОБНОВЛЕНИЕ 2

Используя регистратор слияния, у меня есть это более подробное сообщение, которое означает, что это ошибка «Файл не может быть найден». Однако я установил распространяемые файлы, так почему же он не может найти DLL?

*** Assembly Binder Log Entry  (11/21/2014 @ 4:00:35 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = AURORAFCS\raj
LOG: DisplayName = Microsoft.ReportViewer.WebForms, Version=8.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Partial)
LOG: Appbase = file:///C:/Family/
LOG: Initial PrivatePath = C:\Family\bin
LOG: Dynamic Base = c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\dc46260e
LOG: Cache Base = c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\dc46260e
LOG: AppName = 807e5b0d
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Family\web.config
LOG: Using host configuration file: \\?\c:\windows\microsoft.net\framework\v2.0.50727\aspnet.config
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.DLL.
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms.EXE.
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/dc46260e/807e5b0d/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.EXE.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms.EXE.
LOG: Attempting download of new URL file:///C:/Family/bin/Microsoft.ReportViewer.WebForms/Microsoft.ReportViewer.WebForms.EXE.
LOG: All probing URLs attempted and failed.
21.11.2014

  • См. этот ответ. 21.11.2014
  • Можете ли вы заглянуть в свой проект, выбрать ссылки и сообщить, какая версия Microsoft.ReportViewer.WebForms.dll включена? 22.11.2014
  • (Я не использую asp.net, я просто пытаюсь управлять сетью, которая не управлялась годами, поэтому я сделаю все возможное, чтобы предоставить вам правильную информацию. Это приложение было создано кем-то, кто больше не вокруг и приложение не используется, кроме как для извлечения старых записей.Мне просто нужно было иметь дело с SQL-сервером) 22.11.2014
  • В исходном коде Report5.aspx, который я пытаюсь просмотреть через веб-приложение, я вижу только вызов DisplayName = Microsoft.ReportViewer.WebForms, Version=8.0 22.11.2014
  • Мой большой вопрос: почему веб-сервер не ищет файл в C:\windows\assembly? 22.11.2014
  • Вот почему я спрашивал, похоже, что ваш разработчик мог включить в проект, который вы копируете и развертываете, версию dll, которая не является правильной версией. Файлы в папке bin вашего проекта сначала изучаются на соответствие именам файлов, а затем вылетают оттуда. 22.11.2014

Ответы:


1

Вам необходимо определить, на какую версию элемента управления ReportViewer вы ориентируетесь, и установить соответствующий пакет на тот же сервер, на котором развернуто ваше веб-приложение.

Распространяемый пакет Microsoft Report Viewer 2010

Распространяемый компонент Microsoft Report Viewer 2008 SP1

Распространяемый компонент Microsoft Report Viewer 2008

Распространяемый компонент Microsoft Report Viewer 2005

Я уверен, что логика следующая:

  • ReportViewer 2010 можно использовать с SQL Server 2008 (SP2) и 2012.

  • ReportViewer 2008 можно использовать с SQL Server 2008 и 2005.

  • ReportViewer 2005 можно использовать против SQL Server 2005

21.11.2014
  • Я только что увидел ваш комментарий выше. 21.11.2014
  • RV 2010 ---› SSRS 2008(SP2) 2012 | RV 2008 --› SSRS 2005/2008 | RV 2005 --› SSRS 2005. Я почти уверен, что это он. 21.11.2014
  • Как мне это определить? 21.11.2014
  • Основным фактором является версия sql-сервера, установленная на вашем сервере. VS 2012 и 2008 поставляются с разными версиями элемента управления, который вы используете во время разработки. Какую версию SQL-сервера вы используете? 21.11.2014
  • 2005, какой была предыдущая база данных. Однако это произошло от 2005sp3, где это 2005sp1. 21.11.2014
  • Имеет ли значение, что он идет с сервера 2003 x86 на сервер 2008r2 x64? 21.11.2014
  • Вы должны использовать распространяемый пакет 2005 года. Это нацелено на интерфейс ReportExecution2005, который совместим с sql server 2005. 21.11.2014
  • Я попробую. Я обниму вас обоих, если это сработает. 21.11.2014
  • Ну, я скачал 2005 ReDistributable и sp1 для него, и я получаю ту же ошибку. 22.11.2014
  • Я нашел Microsoft.ReportViewer.WebForms версии 8.0.0.0 с соответствующим токеном открытого ключа в GAC (C:\Windows\Assembly), но у меня все еще возникает ошибка... мне нужно сбросить какие-либо соединения или что-то кэшировать или еще один? 22.11.2014

  • 2

    Я нашел ответ на свою проблему в этом блоге:

    http://www.orcsweb.com/blog/desiree/access-report-viewer-dll-files-for-your-application/

    Я просто извлек необходимую DLL и поместил ее в один из каталогов, которые искало веб-приложение. Однако до сих пор не уверен, почему это произошло.

    21.11.2014
  • Похоже, вы бросаете этот файл в корзину веб-папки. Надеюсь, это сработает, и все, что вы там разместите, переопределит GAC. 25.11.2014
  • Новые материалы

    Библиотеки PyTorch и Python для машинного обучения: приложения в здравоохранении с обнимающим лицом…
    В сфере машинного обучения Python выделяется благодаря своей универсальности и набору предлагаемых библиотек. Развитие машинного обучения в здравоохранении можно частично объяснить простотой и..

    «Что за…» очень хорошо представляет мое выражение лица после того, как я увидел это!
    «Что за…» очень хорошо представляет мое выражение лица после того, как я увидел это!

    5 вещей, которые я сделал, чтобы стать профессиональным разработчиком JavaScript
    Чтобы стать профессиональным JS-разработчиком: 1. Практикуйтесь в рутине, 2. Работайте над проектами, 3. Придерживайтесь одного языка, 4. Наблюдайте за чужим кодом, 5. Будьте последовательны..

    От теории к практике: пошаговое руководство по реализации наивного Байеса
    Вы когда-нибудь застревали в проекте классификации, не зная, как точно предсказать результаты для ваших данных? Вы искали более простой и интуитивно понятный алгоритм, который поможет вам достичь..

    #093 | Моделирование вспышки эпидемии с помощью JavaScript — Часть 3
    TLDR: Я сделал симуляцию вспышки эпидемии, в которую можно поиграть здесь . Мой холст, моя сцена Мой HTML — это всего лишь один div с классом stage, и вот как я настроил на нем свой объект..

    numberToString.js (8kyu 16)
    Алгоритм кодовых войн Проблема Нам нужна функция, которая может преобразовать число в строку. 숫자를 문자열로 변환하는 함수를 작성해라. Решение 01 function numberToString(n) { return n.toString(); }..

    Лучшие практики для быстрого изучения языка программирования
    Изучение языка программирования может быть сложной задачей, но при правильном подходе определенно возможно быстро выучить язык программирования. Хорошее понимание языка программирования может..