none
.NET безопасность в SQL Server 2005 RRS feed

  • Общие обсуждения

  • Есть сборка, есть хранимая процедура на C#, в ней делаю попытку создать домен и загрузить туда сборку.

            byte[] asmBody = ...
            AppDomain dom = AppDomain.CreateDomain("Test domain");
            Assembly asm = dom.Load(asmBody);
            MyClass obj = (MyClass)asm.CreateInstance("MyClass");

    В результате получаю ожидаемое сообщение:

    Msg 6522, Level 16, State 1, Procedure TestDom, Line 0
    A .NET Framework error occurred during execution of user-defined routine or aggregate "TestDom":
    System.IO.FileLoadException: Главный узел запретил использование LoadFrom(), LoadFile(), Load(byte[]) и LoadModule().
    System.IO.FileLoadException:
       at System.Reflection.Assembly.nLoadImage(Byte[] rawAssembly, Byte[] rawSymbolStore, Evidence evidence, StackCrawlMark& stackMark, Boolean fIntrospection)
       at System.AppDomain.Load(Byte[] rawAssembly)
       at System.AppDomain.Load(Byte[] rawAssembly)
       at StoredProcedures.TestDom(SqlString contextData)

    Возникает вопрос: как разрешить для данной сборки загрузку других сборок? Сборка представлена в виде массива байт.

    И второй вопрос: насколько я информирован - после выполнения CLR-метода домен приложения практически сразу выгружается. Как продлить жизнь домена приложения? Хочется некую задачу запустить в фоне от основного запроса. Сервер-брокер в данном случае это как пушкой по воробьям...
    1 апреля 2008 г. 4:14