Проблема доверия DLL DLL канала доставки служб Notification Services
У нас есть экземпляр SQL Notifcation Services, для которого мы написали собственный канал доставки. Этот процесс был запущен и запущен в нашей среде контроля качества, работающей под управлением Windows Server 2003 с SQL Server 2005. Потребовалась небольшая настройка, чтобы получить доверие к пользовательской библиотеке DLL, однако мы все это заработали.
С тех пор мы развернули этот код в нашей среде Live. Это запускает Windows Server 2008 с экземпляром SQL 2005 для служб Notification Services, но затем у нас есть экземпляр SQL 2008, на котором размещается фактический экземпляр БД для служб Notification Services. Службы Notification Services работают должным образом, однако мы не можем обеспечить доверие к пользовательской библиотеке DLL, в результате чего пользовательский канал доставки не будет работать. Мы просто получаем ошибку
That assembly does not allow partially trusted callers
Мы попытались использовать утилиту конфигурирования.NET и caspol.exe, чтобы обеспечить полное доверие к DLL без какой-либо удачи..Dll скомпилирован как DLL-библиотека.NET 2, поскольку служба уведомлений требует этого.
На данный момент у нас почти нет идей, и мы надеемся, что кто-нибудь что-нибудь подскажет?
2 ответа
Нам удалось исправить нашу проблему. Похоже, что Windows Server 2008 более строг в реализации доступа к коду. Предоставив доступ к.DLL по его строгому имени, а не по пути, службы Notification Services получили доступ к коду.
Служба уведомлений не была виновата.
Я думаю, что у вас есть один из двух вариантов:
Примите SQL 2008 и избавьтесь от служб Notification Services, потому что они устарели. Используйте Reporting Services или SSIS, чтобы делать то, что вам нужно.
Вернитесь к SQL 2005.
ИМХО, я бы выбрал вариант 1. Продолжение сборки с устаревшими инструментами быстро найдет вас в ситуации, когда поддержка (сообщество или поставщик) будет крайне затруднена.
Обновить
Это было слишком долго для комментариев.
Не слишком биться в голову, но первой ошибкой было продолжение разработки приложений для технологии, которая была EOL'd (конец жизни) более 3 лет назад. Заявление EOL было обнародовано.
Второй имел среду QA, которая радикально отличается от производства. Перед развертыванием чего-либо в производство среда QA должна быть идентичной... того же типа оборудования, тех же ОС, тех же версий серверов и уровней исправлений. В противном случае, как вы нашли, QA - это шутка.
Теперь, что касается "разрешения", на самом деле есть только один путь: вернуть вашу производственную среду обратно в SQL 2005 с соответствующими исправлениями на месте.
Желаю тебе удачи.