Ошибка при использовании веб-службы из SQL server
Я разрабатываю решение, в котором вызываю веб-службу из SQL Server с помощью хранимой процедуры.
Я пишу код CLR в Visual Studio 2015 C#
SQL Server имеет версию 2008 с .NET Framework 3.5.1 (SQL Server и Visual studio установлены на разных серверах)
Если я делаю вызов веб-службы из программы C# в моем решении Visual Studio, он работает нормально, но когда я делаю вызов из хранимой процедуры, я получаю это сообщение об ошибке:
"Не удалось загрузить файл или сборку' \..(путь)..\Database1.XmlSerializers.dll ' или одна из ее зависимостей. Система не может найти указанный файл."
StackTrace: at System.Отражение.AssemblyName.nGetFileInformation(строка s)
в системе.Отражение.Имя сборки.GetAssemblyName(String assemblyFile)
в StoredProcedures.SqlStoredProcedure1(строка землю)
Что я уже пробовал:
В моем проекте базы данных я публикую сборку сериализатора ("C:\Program файлы (x86)\Microsoft SDKs\Windows\v7.0A\Bin\sgen.exe" / force " $(TargetPath)")
В файл reference. cs я добавил [System. Xml.Serialization.XmlSerializerAssemblyAttribute] с путем к сборке сериализатора.
Я временно отключил настройки исключений CLR, чтобы предотвратить создание исключений для прерывания выполнения.
Я проверил зависимости сборки сериализатора и нашел три сборки. Я поместил эти три сборки в тот же каталог, что и сборка сериализатора.
Во время тестирования я использую уровень разрешений UNSAFE в проекте базы данных.
Я пробовал использовать как "добавить ссылку на службу", так и "добавить веб-ссылку" для создания прокси-сервера для веб-службы
Я был бы признателен за помощь в решении этой проблемы.
С уважением
Кристер
CHill60
Вы упомянули, что SQL Server и VS установлены на разных серверах. Есть ли у вас DLL, установленная на том же сервере, что и SQL Server (так как именно там работает SP)?
Member 13017290
Да, библиотека DLL сериализатора установлена на SQL Server:
Создать сборку [Database1.XmlSerializers]
Разрешение ДБО
Из ' \..Пути..\Database1.XmlSerializers.dll'
С PERMISSION_SET = НЕБЕЗОПАСНО
CHill60
Это была всего лишь мысль :)
RedDk
Я не знаю, что может вызвать это, потому что моя работа с созданием функций CLR, которые используются SQL Server, ограничена и обычно приводится на примере, опубликованном здесь в CP. Но это не помешало бы мне по-прежнему ходить в такие места, как CODEPLEX, и искать проекты CLR, которые делают именно такие вещи, проверять код и дублировать метод до зубов.
Member 13017290
Спасибо за совет. Я искал на сайте Codeplex, но, к сожалению, не нашел там ничего, что помогло бы мне.
NightWizzard
Может быть, учетная запись Windows, в которой работает ваш веб-сервис,не имеет разрешения на доступ к DLL?
Member 13017290
Нет, настройки разрешений верны, так что здесь дело не в этом.
Richard Deeming
Вы абсолютно уверены, что зарегистрировали сборки сериализации XML в SQL?
Использование веб-сервисов и сериализации Xml в интеграции CLR[^]
Сериализация XML из объектов базы данных CLR[^]
Получение XML-сериализации и веб-сервисов для работы с SQL CLR[^]
Member 13017290
Да, я зарегистрировал сборку сериализации (см. Мой ответ на первый комментарий в этой статье). Я также попытался установить уровень разрешений SAFE и EXTERNAL_ACCESS для сборки при ее создании в SQL Server, но все равно получаю ту же ошибку.