Toon posts:

[VB.NET 2005] app.config connectiestring wijzigen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
Ik heb mij vandaag gestort op de app.config van vb.net 2005.
Ik ben bezig met een multi-user crm applicatie en heb een aantal datasources en die wil ik flexibel hebben, want elke user krijgt zijn eigen database en kan tijdens de installatie zijn eigen database locatie opgeven en later eventueel nog wijzigen.
Nu wil ik de connectiestring in de app.config aanpassen tijdens het laden van het splashscreen.
Tijdens het splashscreen doe ik een controle of de DB nog op de laatst bekende locatie aanwezig is, zo nee dan moet de gebruiker de nieuwe/juist locatie opgeven en deze wil ik dan wegschrijven naar de <connectiestring> in de app.config file.
Ik heb wel ontdekt hoe je gegevens kan toevoegen aan de app.config alleen kan ze niet terugvinden in de app.config, weet iemand waarom dat zo is? wordt er een kopie ofzo lokaal weggeschreven waar dan de gegevens die tijdens runtime zijn toegevoegd in staan ?
Maar dat is niet het grootste probleem, ik heb ook gezien op een aantal internet sites en op een van deze topics in dit forum dat het met XML kan, maar mijn vraag is of het niet makkelijker kan ?
Ik kan wel al de connectionstrings uitlezen vanuit de app.config.
Visual Basic:
1
2
config = Configuration.ConfigurationManager.OpenExeConfiguration(Configuration.ConfigurationUserLevel.None)
config.ConnectionStrings.ConnectionStrings("naam").ToString


en het toevoegen en uitlezen ervan doe ik zo:
Visual Basic:
1
2
3
4
5
6
7
8
        config = Configuration.ConfigurationManager.OpenExeConfiguration(Configuration.ConfigurationUserLevel.None)
        config.AppSettings.Settings.Clear()
        config.AppSettings.Settings.Add("test", "hier een tekst")
        config.Save()
        Configuration.ConfigurationManager.RefreshSection("appSettings")
        Dim test as String
        test = Configuration.ConfigurationSettings.AppSettings("test")
        MsgBox(test)

Hieronder nog een gedeelte van het app.config bestand waar de connectionstring staat:
XML:
1
2
3
4
    <connectionStrings>
        <add name="pnData" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=locatie\databasenaam.mdb;User Id=admin;Password=;"
            providerName="System.Data.OleDb" />
    </connectionStrings>

Weet iemand hoe ik die connectionstring value kan aanpassen tijdens runtime ? _/-\o_

Verwijderd

Topicstarter
ik weet nu wel hoe ik een connectionstring kan toevoegen en verwijderen, alleen ik blijf het probleem houden dat als ik hem toevoeg tijdens runtime en ik sluit het project staat de connectionstring niet in mijn app.config maar als ik het project weer opstart en ik vraag die net aangemaakte connectionstring op zonder hem toe te voegen dan krijg ik wel de juiste waarde terug, dus hij moet hem ergens opslaan. Herkent iemand dit probleem ? en zo ja, weet iemand hier een oplossing voor ?

Verwijderd

Runtime kijkt de ConfigurationManager niet naar de app.config in je project, maar naar de copie daarvan (WindowsApplication1.exe.config bv) in je bin\debug of bin\release subdirectory.
Kijk 's of 'ie daar wel aangepast is? :)

[ Voor 6% gewijzigd door Verwijderd op 28-07-2006 20:22 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Je kan wijzigingen wegschrijven naar je configuration file, echter, je moet echter wel het volgende in 't achterhoofd houden:
- als je de applicatie start vanuit je ontwikkelomgeving, dan wordt je originele app.config file (appnaam.exe.config dus), niet 'aangeraakt'. Er wordt een 'tijdelijke' config file gemaakt (appnaam.exe.vshost.config dacht ik) en de wijzigingen worden in deze config file weggeschreven. Die kan je bekijken zolang je applicatie draait. Eens je de applicatie hebt afgesloten, wordt die *.vshost.config file verwijderd.
- Als je de applicatie 'gewoon' start (bv door te dubbelklikken op de exe in de verkenner, dan wordt er wel naar de 'echte' config file weggeschreven.

https://fgheysels.github.io/


Verwijderd

Topicstarter
bedankt voor de info, daar kan ik wel wat mee _/-\o_

Verwijderd

Topicstarter
Verwijderd schreef op vrijdag 28 juli 2006 @ 20:20:
Runtime kijkt de ConfigurationManager niet naar de app.config in je project, maar naar de copie daarvan (WindowsApplication1.exe.config bv) in je bin\debug of bin\release subdirectory.
Kijk 's of 'ie daar wel aangepast is? :)
morgen moet ik weer werken, dan kijk ik er even naar.

Verwijderd

Topicstarter
het was binnen 5 min gelukt.
in de /debug map de appnaam.exe die wordt tijdens runtime gewoon aangepast.
en het maakt geen verschil of je hem vanuit ontwikkelomgeving start of vanuit verkenner(.exe).
heb inmiddels mijn functie ook aangepast en mijn datasources, dus alles werkt weer perfect.
thx guys _/-\o_

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Ha, je bedoelt als je in 'debug' mode gecompiled hebt, maakt hij een vshosts config ?
Hmm, ik dacht dat het enkel was als je 'm vanuit je IDE runde, maar het was al weer een tijdje geleden. :)

https://fgheysels.github.io/


Verwijderd

Vreselijk irritante smiley vind ik dat, maarre... graag gedaan! :)

Verwijderd

whoami, in beide gevallen (debug/release) gebruikt VS voor zover ik weet altijd de <applicationname>.exe.config in die directory, of je 'm nou vanuit de IDE opstart of daarbuiten. Ik ben tenminste nog geen situatie tegengekomen waarbij 'ie een ....vshost.config bestand aanmaakte. Maar ik heb er ook niet echt op gelet. ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
In die situatie maakt hij een tijdelijk config bestand aan, heb ik een tijdje geleden ervaren.
Ik zat nl. met hetzeldfe probleem als de TS: ik wou iets in m'n config file aanpassen en bewaren, en toen ik de applicatie afsloot, en wou gaan kijken in de config file of m'n wijzingen gelukt waren.
Die wijzigingen waren nergens te bespeuren.

Toen ik keek toen de applicatie nog draaiende was, was er een vshosts.config file (appnaam.vshost.exe.config) te vinden, en een gewone config file. In de gewone config file waren er geen aanpassingen te zien; in de vshosts wel.

Ik heb het net nog ff geprobeerd, en het is (bij mij) zo dat, als ik de app run vanuit de IDE de vshost.config file gebruikt wordt, en als ik de app start vanuit Windows Explorer, de 'echte' config file gebruikt wordt.
Eens de app afgesloten was, verdween de vshosts config file.

https://fgheysels.github.io/


Verwijderd

Verwijderd schreef op vrijdag 28 juli 2006 @ 15:13:
Ik heb mij vandaag gestort op de app.config van vb.net 2005.
Ik ben bezig met een multi-user crm applicatie en heb een aantal datasources en die wil ik flexibel hebben, want elke user krijgt zijn eigen database en kan tijdens de installatie zijn eigen database locatie opgeven en later eventueel nog wijzigen.
Je kan natuurlijk ook een master database gebruiken die centraal staat (bijvoorbeeld in dezelfde map als je applicatie) en daar alle gegevens over de locatie van de gebruikersdatabases in opslaan.
Verwijderd schreef op vrijdag 28 juli 2006 @ 15:13:
Weet iemand hoe ik die connectionstring value kan aanpassen tijdens runtime ? _/-\o_
Mijn voorkeur zou uitgaan naar een externe .config. Zo kan je de app.config/web.config intact laten of zelfs read-only maken i.v.m. security.

Custom app.config
AppSettings can Reference an External Config File
Referencing external config files from Web.Config/App.Config
etc.

[ Voor 4% gewijzigd door Verwijderd op 31-07-2006 18:19 . Reden: typo ]


Verwijderd

Welke VS.NET versie gebruik je?
whoami schreef op maandag 31 juli 2006 @ 18:05:
Ik heb het net nog ff geprobeerd, en het is (bij mij) zo dat, als ik de app run vanuit de IDE de vshost.config file gebruikt wordt, en als ik de app start vanuit Windows Explorer, de 'echte' config file gebruikt wordt.
Eens de app afgesloten was, verdween de vshosts config file.
Net geprobeerd vanuit VS 2003, en er wordt geen vshost config bestand aangemaakt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Het gaat hier wel over 2005, zoals je in de topic-titel kan zien.
Vanaf .NET 2.0 (vs.net 2005) is er ondersteuning om je app.config file aan te passen.

In VS.NET 2003 heb je idd geen vshost.config files.

https://fgheysels.github.io/


Verwijderd

OK, point taken. Maar ik probeer nog steeds chocola te maken van:

alexundertaker:
en het maakt geen verschil of je hem vanuit ontwikkelomgeving start of vanuit verkenner(.exe).
whoami:
Ha, je bedoelt als je in 'debug' mode gecompiled hebt, maakt hij een vshosts config ?
Hmm, ik dacht dat het enkel was als je 'm vanuit je IDE runde, maar het was al weer een tijdje geleden.
Ik heb het net nog ff geprobeerd, en het is (bij mij) zo dat, als ik de app run vanuit de IDE de vshost.config file gebruikt wordt, en als ik de app start vanuit Windows Explorer, de 'echte' config file gebruikt wordt.

Verwijderd

Afterlife:
whoami schreef op maandag 31 juli 2006 @ 18:05:
Ik heb het net nog ff geprobeerd, en het is (bij mij) zo dat, als ik de app run vanuit de IDE de vshost.config file gebruikt wordt, en als ik de app start vanuit Windows Explorer, de 'echte' config file gebruikt wordt.
Van wat ik begrepen heb worden de instellingen die je maakt in visual studio, op het moment dat je via visual studio je applicatie start of deployed, geexporteerd worden naar de werkelijke .config.

[ Voor 0% gewijzigd door Verwijderd op 31-07-2006 22:21 . Reden: typo ]


Verwijderd

Topicstarter
Verwijderd schreef op maandag 31 juli 2006 @ 18:16:
[...]

Je kan natuurlijk ook een master database gebruiken die centraal staat (bijvoorbeeld in dezelfde map als je applicatie) en daar alle gegevens over de locatie van de gebruikersdatabases in opslaan.

[...]
Dat had ik eerst haha. Werkte op zich ook goed, maar mijn baas wou naar deze oplossing met de app.config. Het werkt allebei goed. Voordeel van de app.config is dat alle datasets de connectionstring van de app.config hebben. Dat is de reden dat hij naar deze oplossing wou.

Verwijderd

Topicstarter
Verwijderd schreef op maandag 31 juli 2006 @ 21:00:
Afterlife:

[...]

Van wat ik begrepen heb worden de instellingen die je maakt in visual studio, op het moment dat je via visual studio je applicatie start of deployed, geexporteerd worden naar de werkelijke .config.
Klopt :)

Verwijderd

Verwijderd schreef op dinsdag 01 augustus 2006 @ 15:27:
[...]

Dat had ik eerst haha. Werkte op zich ook goed, maar mijn baas wou naar deze oplossing met de app.config. Het werkt allebei goed.
Verwijderd schreef op dinsdag 01 augustus 2006 @ 15:27:
Voordeel van de app.config is dat alle datasets de connectionstring van de app.config hebben. Dat is de reden dat hij naar deze oplossing wou.
Ik snap het voordeel niet. Principe is hetzelfde.

Met de masterdatabase bedoel ik, dat je daarin de connectstrings, etc. van de verschillende gebruikersdatabases in opslaat i.p.v. in app.config
Je haalt eenmalig die gegevens op en gebruikt ze verder in je programma

[ Voor 4% gewijzigd door Verwijderd op 01-08-2006 18:03 ]


Verwijderd

Verwijderd schreef op maandag 31 juli 2006 @ 21:00:
Van wat ik begrepen heb worden de instellingen die je maakt in visual studio, op het moment dat je via visual studio je applicatie start of deployed, geexporteerd worden naar de werkelijke .config.
Klopt, maar wat ik me niet realiseerde was het verschil tussen VS2003 en VS2005: bij 2003 wordt steeds 'applicatie.exe' gebruikt, met bijbehorende 'applicatie.exe.config', of je 'm nou vanuit de IDE of daarbuiten opstart.
Bij 2005 wordt dat 'applicatie.vshost.exe' en 'applicatie.vshost.exe.config' wanneer je 'm vanuit de IDE met F5 opstart (with debugging), en die bestanden worden na de debug run weer verwijderd. Dat wist ik niet, en kon ik gisteren ook niet testen (geen VS2005 thuis, alleen 2003).

Verwijderd

Verwijderd schreef op dinsdag 01 augustus 2006 @ 15:27:
Voordeel van de app.config is dat alle datasets de connectionstring van de app.config hebben.
Nadeel van je connectionstring(s) in app.config opslaan is, dat username en password om in de DB te komen daar als plaintext in komen te staan... En die config file staat standaard ook nog 's in dezelfde directory als de exe, waar iedereen die de applicatie moet kunnen draaien op z'n minst leesrechten heeft.
Pagina: 1