wolf5 Skrevet 16. november 2006 Del Skrevet 16. november 2006 Noen som vet om en måte å kunne disable dette? Problemstillingen er som følger: Et vanlig EXE program laster inn et sett med .Net Assemblies dynamisk vha Assembly.LoadFrom(). Til hver av disse DLL'ene har jeg en config fil (f.eks xxx.dll.config) (jeg har laget en egen SettingsProvider som leser denne + egen ConfigurationManager wrappet over .Net sin) Dette går greit fordi etter lasting så inneholder Assembly propery fremdeles original sti til DLL'ene. (minassembly.Location peker korrekt til DLL'en som ble lastet inn.) MEN når jeg gjør akkurat det samme fra en webservice i mitt tilfelle blir disse DLL'ene lastet inn under "Temporary ASP.NET Files" og .config'ene flyttes tilsvarende.... (minassembly.Location peker en annen plass en DLL'ene som faktisk ble loadet.) Dette gjør det problematisk å vedlikehold konfigurasjonen. Fordelen ved den egne SettingsProvidern er at jeg kan ha ørten webservicer i forskjellige moduler(Dll'er) som er konfigurert for hver dll (dll.config) + ørten appSettings og andre app.config settings. Dermed er disse DLL'ene helt løsrevet fra hovedprogrammet(Exe). Siden .Net ikke støtter egne configer for DLL'er har folk som oftest løst dette med å lage en .xml til hver DLL og en egne metoder for å lese og skrive til denne, samt at alle nye instanser av en webservice blir man nødt til å sette "proxy.Url = myconfig.myurl" på, men de vil vel slite tilsvarende ved at selve assembly filen legges en helt annen plass. Det blir da umulig å pare sammen .dll og tilhørende konfigurasjon. Jeg prøver å gjøre dette usynlig for utviklern, og som sagt virker dette utmerket på vanlige EXE programmer som benytter seg av DLL'ene, men ASP.NET prosjekt oppfører seg annerledes. Da det jeg lager er et rammeverk så må jeg få til å laste inn en assembly(DLL) uten at den forsvinner til temp-compiled området til .Net. Noen som har en ide? Man kunne alltids lage en windows service som putret og gikk med disse DLL'ene dynamisk innlastet og brukt .Net remoting fra webservicen for å kjøre dem men det er ikke en pen løsning. Lenke til kommentar
wolf5 Skrevet 17. november 2006 Forfatter Del Skrevet 17. november 2006 Dette var nok en vanskelig en, men jeg fant faktisk en enkel løsning. Har i utgangspunktet alltid brukt Assembly.Location for å hente sti til assembly (dll/exe). Har nå lagt inn unntak dersom jeg finner "Temporary ASP.NET Files" i pathen. Da henter jeg ut sti fra CodeBase (mulig codebase skulle vært standard, men liker ikke at den bruker formatet "file:///...". Det betyr at den kanskje kan være med noe "http://..." eller noe annet) Og voila. WebServicene henter ut URL automatisk fra riktig config på rett sted. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå