[ASP.NET] server mappath in web.config

Pagina: 1
Acties:

  • doak
  • Registratie: Oktober 2001
  • Niet online
Ik heb me rot gezocht, ook op dit forum dus ken de threads die erover zijn maar is het mogelijk op de één of andere manier Server.MapPath aan te roepen vanuit de web.config? Ik weet dat het mogelijk is in de code-behind en dat werkt ook wel.

Ik gebruik namelijk de oleDbConnection die je krijgt als je een tabel erop sleept. Deze connection komt dan ook weer bij de properties terug van de DataAdapter en in nog veel meer gevallen. Ik wil dus deze connectionstring kunnen beinvloeden door naar de server.mappath te laten kijken. Dit omdat ik thuis mijn database op d:\Inetpub\wwwroot\project1 heb staan en op school staat alles op c:\Inetpub\wwwroot\project1

Hoop dat iemand een idee heeft, begint nu aardig irritant te worden om met gui te werken en steeds die string te moeten aanpassen.

Dit werkt ook al niet
code:
1
2
3
4
5
6
7
//provider etc.
string path1 = configurationAppSettings.GetValue("databasePath1").ToString();
// pakt ie de rest van het path ../database/test.mdb
string serverpath = Server.MapPath(ConfigurationSettings.AppSettings["databasePath2"]);
string total = path1 + serverpath;

this.oleDbConnection1.ConnectionString = ((string)(total, typeof(string)));

[ Voor 20% gewijzigd door doak op 12-01-2006 03:42 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
web.config is een XML bestand. Hier kun je in ieder geval geen standaard .NET code in proppen. Al is het maar omdat je web.config niet gecompileerd wordt. Normaalgesproken is het toch een kleine moeite om de connection string in je web.config aan te passen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:42
Zoals bigbeng al zegt, kan je dat niet in de config-file zelf plaatsen. Het is gewoon een configuratie-file, en je kan er dus -gelukkig- geen code in uitvoeren.

Maar, ik kan me goed inbeelden dat het irritant is om steeds dezelfde code te moeten oproepen. Echter, voor dergelijke dingen hebben we toch methods ?
Waarom maak je bv geen class die een aantal (static) methods heeft die de waardes die jij nodig hebt uit de config file uitleest ?
Je maakt dus abstractie van je config file:
bv:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyConfigSettings
{
     private MyConfigSettings()
     {
     }

     public static string ConnectionString
     {
           get
           {
                   string path1 = ...
                   string serverPath = ...
                   return serverPath;
           }
     }
}

Op die manier is het ook nog eens minder foutgevoelig en onderhoudbaarder. Als je de 'key' in je connectie-string aanpast, hoef je dat nu op nog slechts 1 plaats in je code ook aan te passen.

https://fgheysels.github.io/


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

doak schreef op donderdag 12 januari 2006 @ 01:56:
Dit omdat ik thuis mijn database op d:\Inetpub\wwwroot\project1 heb staan en op school staat alles op c:\Inetpub\wwwroot\project1
Voor dit soort dingen gebruik ik altijd gewoon 2 verschillende config files. Noem eentje school.config en de andere thuis.config en rename een van de twee naar web.config alnaargelang de situatie.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 17-04 15:54
Of je zorgt ervoor dat je database in je App_Data directory staat. Vervolgens kun je in je webconfig als pad gebruiken: "|DataDirectory|bla.mdb".

dus: App_Data/bla.mdb wordt "|DataDirectory|bla.mdb"
As an added convenience, you can supply the |DataDirectory| connection string variable in place of the file path to the App_Data directory for your application.

Everyday's an endless stream, of cigarettes and magazines...


  • doak
  • Registratie: Oktober 2001
  • Niet online
Ik heb het geprobeerd maar werken doet het niet. Ik heb nu staan:

code:
1
<add key="databasePath" value="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;DATA SOURCE=|DataDirectory|test.mdb" />


Die quotes uit jou voorbeeld zorgen voor een error zodat die niet eens gaat debugge. De database staat wel in de application dir. Ik denk niet dat dit zal werken. Iemand die hiermee uit de voete kan?

Verwijderd

doak schreef op vrijdag 13 januari 2006 @ 22:36:
Ik heb het geprobeerd maar werken doet het niet. Ik heb nu staan:

code:
1
<add key="databasePath" value="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;DATA SOURCE=|DataDirectory|test.mdb" />


Die quotes uit jou voorbeeld zorgen voor een error zodat die niet eens gaat debugge. De database staat wel in de application dir. Ik denk niet dat dit zal werken. Iemand die hiermee uit de voete kan?
http://blogs.msdn.com/sma...ve/2005/08/26/456886.aspx

http://weblogs.asp.net/avnerk

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 17-04 15:54
doak schreef op vrijdag 13 januari 2006 @ 22:36:
Ik heb het geprobeerd maar werken doet het niet. Ik heb nu staan:

code:
1
<add key="databasePath" value="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;DATA SOURCE=|DataDirectory|test.mdb" />


Die quotes uit jou voorbeeld zorgen voor een error zodat die niet eens gaat debugge. De database staat wel in de application dir. Ik denk niet dat dit zal werken. Iemand die hiermee uit de voete kan?
die quotes waren natuurlijk voor de uitleg. In je connectie string moet het zonder quotes inderdaad. Maar wat werkt er niet aan? Wat voor error krijg je? Als je debugged, wat wordt dan je connectie string? Ajb wat meer informatie.

Everyday's an endless stream, of cigarettes and magazines...


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 16-04 22:53

mulder

ik spuug op het trottoir

Zet dit in je App.Config:
code:
1
2
3
4
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings file="WinOverride.config">
        <add key="connection-string" value="blah" />

Maak een bestandje WinOverride.config in de rootdirectory van je applicatie.
code:
1
2
3
<?xml version="1.0" encoding="utf-8" ?>
<appSettings file="WinOverride.config">
    <add key="connection-string" value="boehah" />

:)

oogjes open, snaveltjes dicht

Pagina: 1