Hej! Hej Anna, Du kan dela upp det i två olika delar i din web.config: Hej! Hej igen Johan! Har du konfigurerat IIS rätt? d:\applikationsmapp måste vara en virtuell katalog för att det skall fungera med ~/. Anna, Hej Fredde och Johan! Hej! Vad korkat. Hej! Hej, du skriver Connstr med " " runt, då blir det knäppt. Hej! Anna, Hej! installera mdac och jet4 från Det verkar vara ett enkelt litet fel i din kod som du skrev i tidigare inlägg: Hej! Hej! Anna, Hej Johan! Även fast man inte har lösenord på sin databas så har jag alltid haft med variablerna i connectionsträngen. Hej! Anna, du började med en fråga om du kunde köra mappath för att finna databasen men har gått över till att säga att ingen connectionsträng fungerar att ansluta med, ens om den är hårdkodad- stämmer det? Hej! Anna,Server.mappath() i web.config? JAG BLIR TOKIG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Jag skulle i min web.config vilja ange en key som heter t.ex. connstr där jag anger min connection string som går igenom i hela webapplikationen.
t.ex.:
<add key="ConnStr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "\db\testdb.mdb">
</add>
Istället för Data Source= "\db\testdb.mdb" skulle jag vilja använda mig av server.mappath() men får det inte att fungera. Vet inte om man inte kan använda detta i web.config eller om jag missar någonstans med alla apostrofer och sånt.
Något förslag?
Mvh,
AnnaSv: Server.mappath() i web.config?
Du kan inte använda kod i web.config, dock kan du nyttja ~/ för att peka på din applikations root katalog. Om det är detta du är ute efter? Alltså att slippa skriva c:/blabla...
Mvh JohanSv: Server.mappath() i web.config?
<add key="ConnStr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "{0}"/>
<add key="DbRelativePath" value="\db\testdb.mdb"/>
I din kod kan du sedan hämta dem var för sig:
string incompleteConnStr = ConfigurationSettings.AppSettings["ConnStr"];
string relativeDbLocation = ConfigurationSettings.AppSettings["DbRelativePath"];
Expandera relative path till absolut path:
string absoluteDbLocation = Server.MapPath(relativeDbLocation);
Fyll i den i din connectionstring:
string connectionString = String.Format(incompleteConnStr, absoluteDbLocation)
/AndreasSv: Server.mappath() i web.config?
Tack för båda era lösningar, de kommer att fungera perfekt!
Mvh,
AnnaSv: Server.mappath() i web.config?
Detta funkar inte så bra.
Jag har min applikation under d:\applikationsmapp
Om jag skriver ~/dbmapp/db.mdb som datasource i web.config så menar jag alltså att peka på d:\applikationsmapp\dbmapp\db.mdb
Men den säger att den inte hittar sökvägen "C\winnt\system32\dbmapp\db.mdb"...???
Vad beror detta på??
Mvh,
AnnaSv: Server.mappath() i web.config?
//FreddeSv: Server.mappath() i web.config?
Precis som Fredde säger så behöver din root vara en virtuell mapp.
Låt säga att du har din app i:
D:/minApp
där har du din default.html du har en mapp du kallar Db.
D:/minApp/Db
där i har du din databas. databas.db
sökvägen dit blir:
d:/minApp/Db/databas.db
om du sätter minApp mappen till en virtuell mapp i IIS (Web servern) så kommer alla sökvägar i din
applikation som pekar på ~/ att bli:
d:/minApp mappen.
Så ~/Db/databas.db blir
D:/minApp/Db/databas.db
Mvh JohanSv: Server.mappath() i web.config?
Har inte tillgång till min utvecklingsdator förrän ikväll så jag kan inte dubbelkolla detta förrän dess.
Dock låter det konstigt att det skulle vara felet då jag har så klart lagt upp min applikationsmapp i IISen och valt vad adressen ska vara när man kör den i localhosten.
Det funkar alltså att köra applikationen i localhost/och det namn jag gett applikationsmappen i IISen. (Dock ej databasanropen då eftersom inte sökvägen funkar.)
Denna applikation ska snart upp på ett webhotell, antar att de har sin IIS korrekt konfigurerad så att det ska funka med ~.
Mvh,
AnnaSv: Server.mappath() i web.config?
Nu har jag dubbelkollat min IIS och min webapp ligger som jag trodde som en virtuell katalog. (Annars hade jag ju inte heller kunnat köra den överhuvudtaget i localhosten).
Och jag har dubbelkollat din förklaringf ovan och det stämmer exakt överens med hur det är uppbyggt.
Ändå få¨r jag vid databasanrop meddelandet:
"System.Data.OleDb.OleDbException: 'C:\WINNT\system32\~\DB\Databas.mdb' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides."
I IISen är Local Path satt till D:\minWebbApp, vilket också är korrekt. Varför i hela friden börjar den leta i c:\winnt\system32????
Om jag kollar värdet i connectionstringen mot databasen så ser det alltså ut så här:
"Provider Microsoft.Jet.OLEDB.4.0;Datasource=~/DB/Databas.mdb"
Och när dbConn.Open körs genereras alltså felmeddelandet ovan.
Är det någon annan setting i applikationskoden eller IISen som måste göras?
?????????Anna???????????????Sv: Server.mappath() i web.config?
Kär inte Access själv så jag har inte dessa probb. Verkar lite som Jet Motorn tar sökvägen från där Motorn finne eller nått o inte efter din applikation.
Mkt underligt.
Mvh JohanCOuld not find installable ISAM.................
Nu har jag provat allt och jag fattar inte vad som händer här!!
För att komma runt ovanstående beskrivet problem har jag nu gjort följande:
I web.config:
<appSettings>
<add key="DBFolderStr" value="/WebApp/DB/DB.mdb"/>
<add key="ConnStr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}"/>
</appSettings>
I databasanropet:
AbsoluteDBStr = System.Web.HttpContext.Current.Server.MapPath (System.Configuration.ConfigurationSettings.AppSettings("DBFolderStr"))
Connstr = String.Format(System.Configuration.ConfigurationSettings.AppSettings("Connstr"), AbsoluteDBStr)
dbConn = New OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings("Connstr"))
So far so good!
Precis innan jag kör dbconn.open kör jag en System.Diagnostics.Debug.WriteLine(Connstr) som resulterar i "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\wwwroot\WebApp\DB\DB.mdb"
D.V.S. precis som jag vill ha det!
När då dbconn.open körs direkt efter ovanstående kodrad så genereras felmeddelandet:
"Could not find installable ISAM"
När ett fel är löst kommer ett annat, trött man blir!!
Är SÅÅÅÅÅÅÅÅÅÅ tacksam för alla möjliga tänkbara förslag!
Stort tack och trevlig fredagkväll på er!
Mvh, AnnaSv: COuld not find installable ISAM.................
dbConn = New OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings(Connstr))Sv: COuld not find installable ISAM.................
Utan "" blir min variabel connstr = nothing. Verkar inte vara felet.
Mvh,
AnnaSv: COuld not find installable ISAM.................
Mkt riktigt skall du ha "" runt ditt namn. Det felet du får är dock ett mer otevligt fel.
Du hittar en lösning via denna länken.
http://support.microsoft.com/default.aspx?scid=kb;EN-US;209805
Mvh JohanSv: COuld not find installable ISAM.................
Nu har jag kollat att sökvägen till jet3 är korrekt i registryn - vilket den var. Har även för säkerhetsskull omreggat dllen msrd3x40.dll under c:\winnt\system32.
Dessutom har jag kört en repair av mitt office men inte hjälpte något av det....
Andra förslag på åtgärder, någon?
Mvh, ANnaSv: COuld not find installable ISAM.................
http://msdn.microsoft.com/data/downloads/updates/default.aspx#MDACSv: COuld not find installable ISAM.................
<CODE>
AbsoluteDBStr = System.Web.HttpContext.Current.Server.MapPath (System.Configuration.ConfigurationSettings.AppSettings("DBFolderStr"))
Connstr = String.Format(System.Configuration.ConfigurationSettings.AppSettings("Connstr"), AbsoluteDBStr)
dbConn = New OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings("Connstr"))
</CODE>
Borde vara:
<CODE>
AbsoluteDBStr = System.Web.HttpContext.Current.Server.MapPath (System.Configuration.ConfigurationSettings.AppSettings("DBFolderStr"))
Connstr = String.Format(System.Configuration.ConfigurationSettings.AppSettings("Connstr"), AbsoluteDBStr)
dbConn = New OleDbConnection(Connstr)
</CODE>
/PelleSv: COuld not find installable ISAM.................
Jag upptcäkte också detta fel och det är nu korrigerat - dock kvarstår problemet, tyvärr.
Mvh, AnnaSv: COuld not find installable ISAM.................
Lät som ett bra förslag och jag har nu installerat senaste versionerna av Jet4 och mdac men utan resultat dessvärre.
Mvh., ANnaSv: COuld not find installable ISAM.................
Har du rättigheter på allt? Får du fortfarande ISAM felet?
Det är så svårt att veta exakt vad allt kan bero på då det är många faktorer som spelar in i
felsökning. Rättigheter, MDAC version, rätt kod, operativ, etc...
Mvh JohanSv: COuld not find installable ISAM.................
Jag är inloggad med adminrättigheter, jag har mdac 2.8, jet4.0 sp8, jag har läs och skrivrättigheter satta i IISen. Mitt operativ är win 2000, jag har även Office 2000.
Det som är lite lustigt är att om jag flyttar över webprojektet till hotellet där det ska komma att ligga snart detta är löst så får jag samma fel där. Verkar alltså inte ha med min installerade miljö.
Mvh,
AnnaSv: COuld not find installable ISAM.................
Så prova
<code>
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\wwwroot\WebApp\DB\DB.mdb;User Id=;Password=;"
</code>Sv: COuld not find installable ISAM.................
Tack för tipset! Provade det men utan framgång.
Mvh, AnnaSv: COuld not find installable ISAM.................
Det är ju så att om du skriver Provider=Microsoft.Jet.OLEDB .... så förutsätts även att det är en access 2000 databas eller senare. Är det en access 97:a kan du inte använda jet 4 providern utan måste köra 3.5 vilket betyder att din connectionsträng måste se annorlunda ut. Vad har du för version på din databas?Sv: COuld not find installable ISAM.................
Ja de stämmer, det blev lite rörigt. Jag fick på vägen hjälp att komma runt mitt första problem men stötte då direkt på detta istället. Jag kanske borde ha startat en ny tråd istället.
Jag har en access 2000 databas så det ska vara rätt provider jag använder.
Mvh,
ANnaSv: COuld not find installable ISAM.................
Nu är alla dina connectionstring problem över! http://www.connectionstrings.com/ Enjoy =)