Почему я получаю сообщение об ошибке при попытке добавить веб-ссылку в задачу сценария (SSIS)?

Я пытаюсь добавить веб-ссылку в пакет SSIS на клиентский сервер для связи с веб-службой.

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

НО когда я выхожу из редактора задач сценария, я получаю сообщение об ошибке сценария "Скрипт, содержащийся в пакете, имеет ошибки компиляции. Сохранить изменения?"< /сильный>

Если я нажму «Да», моя задача сценария будет отмечена красным крестиком и в нем будет написано «Двоичный код для сценария не найден».

Даже если я создам новый проект, добавлю задачу сценария, добавлю веб-ссылку (без другого кода в задаче сценария) с тем же результатом.

Тем не менее, он отлично работает, добавляя ту же ссылку, что и ссылка на службу, без ошибок. Проблема в том, что владелец этого веб-сервиса прямо сказал, что мне нужно использовать веб-ссылку, поскольку его методы являются методами веб-службы VS2005.

Я попробовал то же самое на своем локальном компьютере, и он работал с веб-ссылками! Единственная разница, о которой я мог подумать, заключается в том, что я использую Microsoft Visual Studio 2012 (инструменты данных) на своем локальном компьютере, а сервер использует Microsoft Visual Studio 2010 (инструменты данных).

Я также попытался создать SSIS-пакет на своем компьютере, переместить его на сервер, открыть (без ошибок, если я ничего не изменил в задаче сценария), а затем запустить пакет. Получено следующее сообщение об ошибке "Исключение было вызвано целью вызова".

Ошибка вызова ssis

В этом случае, если я открывал задачу сценария и делал какие-либо изменения (даже добавлял комментарий), я получал ту же ошибку (двоичный код для сценария не найден) после выхода из задачи сценария.

Что я пробовал:

  • Запустите проект как в 32-битной, так и в 64-битной среде выполнения.
  • Установите для задержки валидации значение True
  • Измените поведение URL для веб-ссылки на статическое.
  • Пробовал отладку, а также «расширенную» отладку в соответствии с http://blog.fredrikhaglund.se/blog/2009/12/22/debugging-exception-has-been-thrown-by-the-target-of-an-invocation/.
  • Проверил права у пользователя под управлением VS (в Component Services, Microsoft SQL Server Integration Services 11.0), у пользователя полные права.
  • Запустите Visual Studio от имени администратора.
  • Добавьте веб-ссылку на совершенно другой веб-сервис, та же ошибка.

Другая информация:

  • Сервер: Windows Server 2012

  • Доступ в интернет на сервере

  • На сервере установлен .NET Framework 2.0,3.0,3.5 и 4.5.

  • Клиентские средства SDK и обратная совместимость клиентских средств установлены на сервере.

Я искал по всему Интернету людей с решением этой проблемы, но не нашел. Итак, я обращаюсь к SO, как я могу решить эту проблему?

Заранее спасибо!


person niklasolsn    schedule 05.03.2015    source источник
comment
Можете ли вы опубликовать трассировку стека ошибки TargetInvocation? Вы также можете попробовать сохранить reference.cs при добавлении веб-ссылки и добавить его как класс в свой скриптовый компонент. И посмотрите, сохраняется ли в этом случае класс.   -  person Ako    schedule 06.03.2015
comment
Я обновил сообщение с изображением сообщения об ошибке. Я искал файл reference.cs, но не смог найти его нигде в проекте, даже проверил папку решения. Где я могу найти его? Спасибо.   -  person niklasolsn    schedule 09.03.2015
comment
В проводнике проекта компонента сценариев, где вы также видите ScriptMain.cs, есть значок, показывающий все файлы. Используя это, вы можете перейти к файлу reference.cs.   -  person Ako    schedule 09.03.2015
comment
Нашел, и я действительно заставил его работать! Я добавил веб-ссылку, скопировал reference.cs, удалил веб-ссылку, а затем добавил reference.cs в качестве класса в моей задаче сценария. Пришлось раскомментировать одну строку в reference.cs, и тогда я мог использовать ссылку, как и раньше. Ако, не забудьте добавить свой комментарий в качестве ответа, и я приму его. Спасибо!   -  person niklasolsn    schedule 16.03.2015
comment
Все в порядке, я рад, что это работает для вас.   -  person Ako    schedule 16.03.2015


Ответы (2)


Чтобы устранить исчезающую веб-ссылку, вы можете попробовать вручную добавить клиентский прокси-код в свое решение:

  1. Значок «Открыть скрипт» «Выбрать все файлы» в обозревателе решений
  2. Перейдите к веб-ссылке и найдите файл reference.cs.
  3. Скопируйте содержимое этого файла в новый файл класса.
  4. Удалить веб-ссылку
  5. Перекомпилируйте свой код, сохраните и выйдите
  6. Откройте свой проект, чтобы увидеть, сохранена ли ссылка.
person Ako    schedule 06.03.2015
comment
Есть ли недостатки при использовании этого решения? Это немного похоже на быстрое и грязное исправление. - person niklasolsn; 25.03.2015
comment
Недостатком является то, что вы отказываетесь от гибкости, поскольку вы не можете щелкнуть правой кнопкой мыши и обновить веб-ссылку, когда она может измениться. - person Ako; 26.03.2015

Самый быстрый и простой способ — найти папку VSTA, которая должна появиться в папке C:\Users\Your User Directory\AppData\Local\Temp.

Щелкните правой кнопкой мыши папку VSTA и перейдите в «Свойства». Предоставьте владельцу аккаунта полный доступ. Сохраните и закройте Visual Studio. Повторно откройте, и все должно быть в порядке.

person Tope Olutola    schedule 14.11.2015