26. juli 2007 - 10:03Der er
26 kommentarer og 1 løsning
AppDomain funktion deprecated - hvordan løses det?
Hej
Sidder og roder med et tredjeparts API, som p.g.a. noget IIOP og COM+ interaktion forlanger at jeg bruger følgende kald, for at undgå en IIOP exception:
Det har jeg så kigget lidt på, men jeg aner ikke hvordan jeg skal få det til at virke. Er der nogen der har styr på AppDomain, så de kan sige hvad jeg skal gøre for at få samme effekt som med AppDomain.CurrentDomain.AppendPrivatePath()?
Situationen er, at det jeg laver, er middle tier imellem et tredjeparts IIOP .NET API og et gammelt 16 bits legacy system.
Legacy systemet kontakter min app som er en COM+ service. Herved bliver min process / domæne / hvaddetnuhedder startet op i C:\Windows\System32 mappen af en exe fil derinde. MEN det er skidt, fordi det tredjeparts API jeg kalder, har en masse DLL'er liggende i det bibliotek hvor jeg installerer min app og de refererede tredje parts DLL'er. Et eller andet sted inde i de DLL'er, som jeg ikke har styr over, tror DLL'erne at de bare kan kigge der hvor de selv er, for at finde sig selv (går ud fra der er noget runtime assembly loading i de DLL'er).
Derfor skal jeg have sagt til mit domæne, at den ikke skal kigge i C:\Windows\System32, men i stedet kigge i den mappe hvor jeg er installeret. Det sørgelige er jo så at AppDomain.CurrentDomain.AppendPrivatePath() virker, men at den er deprecated.
Den gør den heller ikke her, så længe jeg starter den via noget Test GUI eller lignende. Hvis jeg registrerer den som COM+ service går det galt inde i de tredjeparts DLL'er, som beskrevet ovenover.
Problemet med den sti er bare, at den er relativ i forhold til start processen - i mit tilfælde System32 mappen. Om den kan finde ud af absolutte stier må komme an på en prøve :)
en detalje er dog, at den nye metode er blevet rapporteret, som havende en fejl! og kunne ikke finde nogle steder, at denne fejl skulle være fikset endnu.
så vil mene du skal fokusere udelukkende på den linje i config filen og hvis det ikke virker kunne det jo se ud til det ikke er fikset (evt. sørg for du har service pack installeret til visual studio - mener at have installeret sådan en selv)
Ok - det bliver lige lidt senere, da jeg er ved at gå fuldstændig sukkerkold. Har ikke fået frokost og skal ud og hente den i byen. Vender tilbage senere...
Jeg tror ikke artiklen helt afspejler min situation. Hvis det skulle være 1 af de 3 muligheder beskrevet, må det være den første, da de DLL'er der bøvler ligger samme sted som min app.
Forskellene er bare, at min service for det første ikke er en EXE, men bare en DLL der bliver aktiveret af hvem der nu end måtte kalde den, og for det andet ligger mine DLL'er (både min app og tredje parts DLL'erne) ikke samme sted som hvor min process bliver startet. Da alt det her sti halløjsa ser ud til at arbejde på relative stier, fra hvor processen / domænet opstår, kan jeg ikke "navigere" hen til hvor mine DLL'er ligger rent fysisk.
Jeg lukker og sætter min lid til, at MS får lavet noget genialt. ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.