Мне было поручено написать функцию CLR, которая будет массово отправлять электронные письма с использованием Mandrill.Net. После многих препятствий со сборками и другими проблемами мне удалось исправить большую часть функции. Осталось только добавить отправку этих писем (для этого у меня уже был код). К сожалению, после того, как я добавил код, я получил эту ошибку:
Динамические операции могут выполняться только в однородном AppDomain.
Как оказалось, Mandrill.Net (и RestSharp, который используется под капотом) широко использует динамические типы. Очевидно, я искал решения этой проблемы, и большая часть того, что я нашел, выглядела как appdomain-error-while-l">это:
<NetFx40_LegacySecurityPolicy enabled="true"/>
<trust legacyCasModel="false" level="Full" />
Это добавление этих двух строк в файл конфигурации проекта. Я применил решение к файлу app.config
, но ничего не изменилось, и я все еще получаю ошибку (да, я воссоздал сборку и функцию в Sql Server).
По правде говоря, я не смог найти ничего об этой проблеме в контексте CLR Sql Server, поэтому мне пришло в голову, что на самом деле может быть невозможно использовать эти типы в этом контексте (например, SQL Server контролирует политику, которая предотвращает использование динамических типов, а не моей собственной библиотеки). Можно ли использовать эти динамические типы в функциях CLR в SQL Server?
P.S. В своем коде я также использую Dapper. На более раннем этапе я также получил эту ошибку, когда явно использовал тип dynamic
для хранения результатов запроса (на самом деле Dapper возвращает их как IEnumerable<dynamic>
). Однако после добавления Linq Cast<Dictionary<string,object>>()
ошибка исчезла (хотя Dapper, вероятно, все еще работал с типом dynamic
).
legacyCasModel="true"
) в файлsqlservr.exe.config
в том же каталоге, что и вашsqlservr.exe
? Вероятнее всего, потребуется перезагрузка SQL Server. Будьте осторожны, даже если это сработает, поскольку я не уверен, каковы все последствия этого шага (поскольку очевидно, что это будет глобальным для всех сборок, загруженных в SQL Server). - person Jeroen Mostert   schedule 13.02.2015