Avatar billede staever Nybegynder
02. november 2007 - 10:54 Der er 10 kommentarer og
1 løsning

Windows service og load af DLL til AppDomain

Hej


Jeg sidder og skal til at lave vores hovedopgave på Datamatikerstudiet om til en windows service, det kører pt som en normal Windows Form, dog uden noget grafisk blot så den kan startes let.

Problemet ligger her i, at når vi laver det om, uden at ændre koden så vil den pludselig ikke loade den DLL dynamisk som vi kan hvis det kører som Windows Form.

Koden ser således ud:

assembly = domain.Load(Properties.WorkflowData);

hvor Properties.WorkflowData indeholder et byte-array med workflowet. Der burde da ikke være nogen forskel, gjorde der?

Håber på et hurtigt og hjælpende svar :P

/To studerende med sved på panden
Avatar billede kalp Novice
02. november 2007 - 11:03 #1
Læs her hvordan man opretter en windows service og hvordan man laver en installer.

For at windows service'en har fornuftige rettigheder kan i under installeren sætte den til LocalService.
Avatar billede staever Nybegynder
02. november 2007 - 11:04 #2
AppDomain domain;
Assembly assembly;
AppDomainSetup domainInfo;

domainInfo = new AppDomainSetup();
domainInfo.ApplicationBase = Properties.FilePath;
domain = AppDomain.CreateDomain("Workflow", null, domainInfo);
assembly = domain.Load(Properties.WorkflowData);

Det er så den sidste linie der giver problemer ...

Indtil videre har vi overvejet om et evt. kunne være nogen rettigheder der ikke er på plads? dog hvis vi sætter selve servicen til at starte med vores eget login virker det stadig ikke.
Avatar billede kalp Novice
02. november 2007 - 11:09 #3
sorry.. jeg mener "LocalSystem"

så starter den helt sikkert.
Avatar billede staever Nybegynder
02. november 2007 - 11:14 #4
takker :) ... var den desværre sat til (LocalSystem). Problemet ligger heller ikke i, at den ikke vil starte selve servicen, men i at loade vores DLL'er med workflows senere runtime ... som ovenstående kode burde klare og også gør når vi bare kører programmet som et normalt Windows Program og ikke en Service
Avatar billede kalp Novice
02. november 2007 - 11:20 #5
Jeg har kun læst om AppDomain's så det et svar sidder ikke lige mellem fingrene desværre.

Jeg ville nok kigge i .NET Configuration under administrative tools - der kan man også lege med sikkerhedsindstillinger.
Avatar billede staever Nybegynder
02. november 2007 - 11:34 #6
Yes ... kunne også meget vel være sådan noget.

Vi får følgende fejlmeddelse ihvertfald, men filen ligger der:

Could not load file or assembly 'WorkFlowExample3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Avatar billede bvli Praktikant
02. november 2007 - 14:35 #7
Din service kører i %systemroot%\System32. Så det er faktisk current dir. Prøv som noget af det første I gør, at ændre Environment.CurrentDirectory til Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

/B
Avatar billede staever Nybegynder
19. februar 2008 - 13:14 #8
Der mangler da vist at blive uddelt nogle point her ... giver i svar? :)
Avatar billede bvli Praktikant
19. februar 2008 - 14:09 #9
Fik I det til at virke? Og hvis - hvem skal have points?

/B :)
Avatar billede staever Nybegynder
21. august 2008 - 12:52 #10
Hej ... jeg fik da vist aldrig delt point, sorry. Men vi fandt aldrig løsningen i vores applikation, men i andre virkede det vi lavede ... men hvis i smider et svar deler i dem bare, så er det vist fair? :)
Avatar billede staever Nybegynder
04. september 2008 - 11:50 #11
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester