Avatar billede nielslbeck Nybegynder
25. juni 2003 - 20:59 Der er 1 løsning

Hvordan undgår jeg Assert?

Hvis jeg fra mit assembly, lad os kalde det A, benytter en metode i et andet assembly, som vi kalder B, og ikke ønsker at metoden i B skal have adgang til at læse fra drev C skriver jeg selvfølgelig i A noget i stil med:

CodeAccessPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"c:\");
permission.Deny();

Hvis metoden i B så forsøger noget i stil med:

CodeAccessPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"c:\fil.txt");
permission.Demand();

Vil den finde ud af, at den ikke har adgang til filen på drev C, lækkert nok :-)
Men hvis metoden i B er så fræk at kalde noget kode ala:

CodeAccessPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"c:\fil.txt");
permission.Assert();

Vil den alligevel få adgang til drev C :-(

Så spørgsmålet er nu, hvordan jeg effektivt sætter en stopper for metoden i B?

Jeg har prøvet med nogle forskellige attributter på både assembly og metodeniveau, i både A og B, men intet har hjulpet.
Avatar billede nielslbeck Nybegynder
26. juni 2003 - 22:43 #1
Nå, men når der nu ikke er andre der kan svare på spørgsmålet, må jeg jo selv gøre det :-)

Ved at indsætte følgende i B, fratager B sig selv muligheden for at benytte Assert():

[assembly:SecurityPermissionAttribute(SecurityAction.RequestRefuse, Assertion = true)]
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