AppDomian.Load Exception
От: AHA Россия  
Дата: 08.12.04 11:25
Оценка:
Привет,
При попытке загрузить сборку в AppDomain получаю Exception: "Insufficient state to deserialize the object. More information is needed."

Проблема в следующем:
Есть куча DLL (созданных налету через ICodeCompiler->CompileAssemblyFromFile по описанию WebService).
Раньше я загружал их так:
    String *sType = String::Format ( S"{0}.{1}", sDynamicNameSpace, sClassName );
    Assembly *oAssembly = Assembly::LoadFrom ( sFileNameDll );
    Type *tDynamic = oAssembly->GetType ( sType );
    Object *oObject = Activator::CreateInstance ( tDynamic );
    Object *oResult = tDynamic->InvokeMember ( .............


Сейчас потребовалось переодически эти DLL обновлять, для этого надо грузить их в Domain.
Сделал как в MSDN:
Byte SoapTest::LoadFile ( String *sFileName)[]
{
    FileStream *oFileStream = new FileStream ( sFileName, FileMode::Open );
    Byte arBuffer[] = new Byte[(int) oFileStream->Length];
    oFileStream->Read ( arBuffer, 0, arBuffer->Length );
    oFileStream->Close ( );
    return arBuffer;
}

..
    AppDomainSetup *oAppDomainSetup = new AppDomainSetup ( );
    oAppDomainSetup->ApplicationName = sDynamicNameSpace;
    oAppDomainSetup->ApplicationBase = sDllPath;
    oAppDomainSetup->ShadowCopyFiles = S"true";

    Evidence *oEvidence = new Evidence ( AppDomain::CurrentDomain->Evidence );
    
    AppDomain *oAppDomain = AppDomain::CreateDomain ( sDynamicNameSpace, oEvidence, oAppDomainSetup );

    oAppDomain->Load ( LoadFile ( sFileNameDll ) );


При этом получаю описанный выше — Exception. В чем может быть проблема ?

PS: CreateInstanceFromAndUnwrap работает, но непонятно как из полученного Proxy получить сам объект, т.к. Type заранее не известен (есть только TypaName)

Object *oObject = oAppDomain->CreateInstanceFromAndUnwrap ( sFileNameDll, sType );
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.