[ASP.NET] Meerdere (web).config files?

Pagina: 1
Acties:

  • Tom
  • Registratie: Juni 1999
  • Niet online
Ik kon het niet helemaal in de titel krijgen wat ik bedoel..

We hebben hier een project met bijv. de volgende directory-structuur:
  • klanten
    • klant 1
    • klant 2
    • klant 3
  • modules
    • blaatmodule
Die blaatmodule bevat ASPX pagina's die vrij algemeen van opzet zijn, maar we willen bepaalde instellingen afhankelijk van de inlog bepalen (zoals de connectionstring van de database).

Een web.config is natuurlijk ideaal om settings in vast te leggen omdat je deze makkelijk kunt uitlezen, maar een web.config pakt ie alleen voor onderliggende directories. Is het mogelijk dat je de web.config (of andere .config) in de klantdirectory legt en deze in je ASPX-pagina's aanwijst?

Een alternatief is zelf een XML erneer te zetten, maar dan moet er wat geschreven worden om die uit te lezen. Is niet zoveel werk, maar het is natuurlijk beter om dat via de ConfigurationSettings.AppSettings op te vragen :)

Iemand enig idee?

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Tom schreef op 06 januari 2004 @ 09:36:
Die blaatmodule bevat ASPX pagina's die vrij algemeen van opzet zijn, maar we willen bepaalde instellingen afhankelijk van de inlog bepalen (zoals de connectionstring van de database).

Een web.config is natuurlijk ideaal om settings in vast te leggen omdat je deze makkelijk kunt uitlezen, maar een web.config pakt ie alleen voor onderliggende directories. Is het mogelijk dat je de web.config (of andere .config) in de klantdirectory legt en deze in je ASPX-pagina's aanwijst?
Een webconfig is geldig voor de applicatie;
dwz, de webconfig van de directory blaatmodule, wordt toegepast op de aspx files binnen die directory blaatmodule, en z'n subdirectories.
In een subdirectory kan je ook een web.config zetten, die de settings van de web.config in de parent directory inherit. Met de web.config in de subdirectory kan je dus bepaalde settings gaan overriden.

https://fgheysels.github.io/


  • Tom
  • Registratie: Juni 1999
  • Niet online
whoami schreef op 06 januari 2004 @ 09:41:
[...]

Een webconfig is geldig voor de applicatie;
dwz, de webconfig van de directory blaatmodule, wordt toegepast op de aspx files binnen die directory blaatmodule, en z'n subdirectories.
In een subdirectory kan je ook een web.config zetten, die de settings van de web.config in de parent directory inherit. Met de web.config in de subdirectory kan je dus bepaalde settings gaan overriden.
Snap ik, maar ik zou em eigenlijk graag buiten die directory zetten en in mijn code de juiste web.config aanwijzen (die hij, behalve z'n eigen web.config, ook inlaad). Of in ieder geval afhankelijk van de klant (cq inlog) een bepaalde web.config inlaad.

Maar ik kan er helemaal niets over vinden, behalve over de manier hoe de applicatie omgaat met web.configs, dus wat jij ook al zegt.. dat was al bekend. We hadden hier al min of meer besloten om zelf een XML in elkaar te zetten, maar wilde het toch nog even hier posten.. :)

[ Voor 17% gewijzigd door Tom op 06-01-2004 09:45 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
AFAIK kan dat niet.
De web.config wordt nl. bij het starten van de applicatie (het moment dat de eerste sessie begint) in het geheugen ingeladen en gecached.

Misschien kan je wel verschillende entries maken in de appSettings (een key voor elke klant, met daarin de connectie-string), en dan kan je misschien in je code -dmv een of andere factory pattern- een connectie-object maken met de juiste connectie-string.

bv:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public interface IConnectionFactory
{
     SqlConnection   CreateConnection();     
}

public class ConnectionCreatorKlantA : IConnectionFactory
{
    public SqlConnection CreateConnection()
    {
         return new SqlConnection ( ConfigurationSettings.AppSettings["dbconnKlantA"] );
    }
}

public class ConnectionCreatorKlantB : IConnectionFactory
{
    public SqlConnection CreateConnection()
    {
         return new SqlConnection ( ConfigurationSettings.AppSettings["dbconnKlantB"] );
    }
}


In je applicatie ga je dan het juiste 'ConnectionCreator' object gaan maken, hoe je dat kunt doen, weet ik niet in je situatie.
Maar toch, bv:
code:
1
2
3
4
5
6
7
8
9
IConnectionFactory  blaat;
if( IsKlantA )
{
     blaat = new ConnectionCreatorKlantA();
}
else
{
     blaat = new ConnectionCreatorKlantB();
}


Je kunt er ook voor zorgen dat je 'ConnectionCreator' een singleton is, en je gebruikt dan overal in je code dat object 'ConnectionCreator'.

Bv:
code:
1
SqlConnection conn = blaat.CreateConnection();

[ Voor 103% gewijzigd door whoami op 06-01-2004 09:57 ]

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Gebruik de <location> tag in je web.config. zie help voor details.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
EfBe schreef op 06 januari 2004 @ 09:51:
Gebruik de tag in je web.config. zie help voor details.
Daarmee ga je toch gewoon gaan zeggen voor welke aspx pagina's welke settings gelden ?
Eigenlijk is dat een beetje hetzelfde als die pagina's in een andere directory plaatsen, en daar ook een web.config in plaatsen.

Nu kan dat natuurlijk zijn dat dit in Tom's situatie voldoende is...

https://fgheysels.github.io/


  • alley
  • Registratie: Mei 2002
  • Laatst online: 19-04-2023

alley

ahuh

Je pagina's hoeven niet perse in een andere directory te staan, als je je eigen Handler maakt voor de ASPX calls. Dan pakt ie wel een andere web.config, en kun je 'm zelf redirecten naar de goede aspx pagina

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Hoe heb je het nu gedaan Tom ?

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Ik vraag me af wat er mis is met eigen configbestanden? Deze moeten, zeker als je een klein 'parsertje' schrijft, welke de variabelen in session vars zet of het bestand in de cache zet, toch wel goed bruikbaar zijn.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1