[ASP.NET] virtual folder in code-behing cre♪eren

Pagina: 1
Acties:

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 22-08 13:56
Ik ben bezig met een module waar een user een folder op de server kan delen op de website.

Daarom moet er een nieuwe virtual folder gemaakt worden die refereert naar de folder op de server

Maar bij het maken van de virtual folder krijg ik access denied...

Is iemand hier ook tegen aan gelopen?

[ Voor 101% gewijzigd door PhoneTech op 23-02-2003 19:21 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Doe eens een gok als je de foutmelding leest, waar het aan kan liggen...
<h1>Access is denied</h1>
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Access is denied

Source Error:

[ Voor 85% gewijzigd door gorgi_19 op 23-02-2003 19:26 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 22-08 13:56
gorgi_19 schreef op 23 February 2003 @ 19:00:
Doe eens een gok als je de foutmelding leest, waar het aan kan liggen...


[...]
Zover was ik ook gekomen :D

Maar heb geen idee hoe ik dit op moet lossen....

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:21

mulder

ik spuug op het trottoir

Wie is er in feite ingelogd als je die foutmelding krijgt?

oogjes open, snaveltjes dicht


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

De oplossing was dus dat het ASP.Net account niet voldoende rechten had om een virtual folder aan te maken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 22-08 13:56
Don Facundo schreef op 23 February 2003 @ 19:13:
Wie is er in feite ingelogd als je die foutmelding krijgt?
ASPNET

Ik heb het opgelost, door een snelle hack te gebruiken...

Ik heb ASPNET toegevoegd aan Administrators...

Dit is even tijdelijk dan, uiteindelijk zal ik alleen ASPNET de minimale rechten geven...

  • alley
  • Registratie: Mei 2002
  • Laatst online: 18-08 20:40

alley

ahuh

Je moet ASPNET (of Users groep, waar ie in zit) rechten geven om het betreffende COM object te benaderen... Dat kun je instellen door 'dcomcnfg' op te starten.

I am always doing that which I can not do, in order that I may learn how to do it. (Pablo Picasso)


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 22-08 13:56
Even voor de mensen die hier later ook problemen mee gaan krijgen (want die gaan jullie krijgen >:))

IIS5.1 heeft een bug...ja, een van de vele

Bij het maken van een nieuwe virtual directory heb je deze code nodig:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public void CreateVirtualDirectory(string PhysicalPath, string VirDirName)
        {
            System.DirectoryServices.DirectoryEntry oDE;
            System.DirectoryServices.DirectoryEntries oDC;
            System.DirectoryServices.DirectoryEntry oVirDir;
            string sIISPath;
            try
            {
                sIISPath = "IIS://" + _serverName + "/W3SVC/1/" + _BaseVirtualDirectory;
                oDE = new DirectoryEntry(sIISPath);
                oDC = oDE.Children; 
                oVirDir = oDC.Add(VirDirName,oDE.SchemaClassName.ToString()); 
                oVirDir.CommitChanges(); 

                oVirDir.Properties["Path"].Value = PhysicalPath; 
                oVirDir.Properties["AccessRead"][0] = true;
                oVirDir.Invoke("AppCreate",true); 
                oVirDir.Properties["AppFriendlyName"][0] = VirDirName;

                oVirDir.CommitChanges(); 

                _VirtualDirectory = "http://" + _serverName + "/" + _BaseVirtualDirectory;
            }
            catch (Exception exc)
            {
                throw new Exception(exc.Message); 
            }
        }


Dit werkt dus NIET op IIS5.1

Om het op te lossen, moet je newVirDir.CommitChanges(); achter elke property assignment zetten!

Dus dan krijg je dit stukje code:
ASP:
1
2
3
4
newVirDir.Properties["AccessRead"].Add(true); newVirDir.CommitChanges();
newVirDir.Properties["Path"].Add(realPath); newVirDir.CommitChanges();
// Create a Application
newVirDir.Invoke("AppCreate",true); newVirDir.CommitChanges();


Ik hoop dat ik hiermee een hoop P&W'ers mee van dienst kan zijn :)

[ Voor 55% gewijzigd door PhoneTech op 24-02-2003 23:07 . Reden: Ok...De code die er eerst stond werkte dus niet helemaal goed, Deze code werkt iig op IIS5.1 :D ]

Pagina: 1