08. december 2005 - 14:25Der er
6 kommentarer og 1 løsning
Give .aspx filerne adgang til reflection.
Hejsa.
Jeg har skrevet noget i C# der benytter reflection. Når jeg prøver at køre dette gennem en .aspx fil får jeg en "System.Security.Permissions.ReflectionPermission" fejl. Hvordan præcis får jeg systemet til at forstå at det må den godt? Er det i .NET frameworket eller i IIS'en?
Og hvad præcis skal jeg gøre for at få det til at virke.
Mit bud er at det er IIS'en. Dette er et gæt - gå ind i din .net configuration - vælg den første runtime security police mappe (oppefra og ned)- vælg code groups - vælg all code - vælg Edit Code Group Properties - sæt flueben i policy below this lvl will not be evalueted - vælg tab Permisson Set - I Permission Set sætter du Full Trust. Håber det virker ellers paste noget kode.
Det ser ud til at virke okay. Nu får jeg ikke den der permission fejl. Men nu fejler følgende kode:
Assembly asm = Assembly.GetEntryAssembly(); foreach(Type asmType in asm.GetTypes()) {
Får en "Object reference not set to an instance of an object." fejl. Det virkede fint, da jeg oversætte det hele til en .exe og kørte det, men ikke nu når det bliver kørt via en .dll.
I hvilken grad ændrer en assembly sig når den bliver oversat til en .dll frem for en .exe.
Ok - Assembly.GetEntryAssembly() returnerer null i asp.net fordi koden som bliver eksekveret ikke bliver startet af et kald til AppDomain.ExecuteAssembly som kun bliver udført når du starter en exe fil.
En webside i asp.net er i sidste ende en klasse der implementere IHttpHandler interface. Når asp.net skal udføre et request konstruere den en ny instance af en klasse der svarer til den side som bliver besøgt. Metoden som står for at behandle requestet er ProcessRequest.
Intet sted i denne proces bliver en assemblys entry point eksekveret hvilket er medførende til at GetEntryAssembly-metoden ikke virker.
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.