Проблема доверия 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 получили доступ к коду.

Служба уведомлений не была виновата.

Я думаю, что у вас есть один из двух вариантов:

  1. Примите SQL 2008 и избавьтесь от служб Notification Services, потому что они устарели. Используйте Reporting Services или SSIS, чтобы делать то, что вам нужно.

  2. Вернитесь к SQL 2005.

ИМХО, я бы выбрал вариант 1. Продолжение сборки с устаревшими инструментами быстро найдет вас в ситуации, когда поддержка (сообщество или поставщик) будет крайне затруднена.

Обновить

Это было слишком долго для комментариев.

Не слишком биться в голову, но первой ошибкой было продолжение разработки приложений для технологии, которая была EOL'd (конец жизни) более 3 лет назад. Заявление EOL было обнародовано.

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

Теперь, что касается "разрешения", на самом деле есть только один путь: вернуть вашу производственную среду обратно в SQL 2005 с соответствующими исправлениями на месте.

Желаю тебе удачи.

Другие вопросы по тегам