Avatar billede bergstein Nybegynder
05. april 2009 - 13:15 Der er 12 kommentarer og
1 løsning

Connecte til access database på webhotel

Hej

Jeg har en asp.net (vb.net) hjemmeside med Access database. Det spiller fint lokalt på min PC men sovsen klumper, når det kommer til min connectionstring i den udgave, jeg skal lægge på mit webhotel.

På mit webhotel skal min access database ligge i et bibliotek, der hedder "database" som ligger et trin længere oppe end selve roden af mit webhotel ( ala /../database/)

I gamle dage med traditionel ASP klarede jeg dette i retning af nedenstående:
tempConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../database/guestbook.mdb") & ";UID=admin;PWD=;"

Hvordan kan jeg gøre tilsvarende i asp.net. Pt. har jeg følgende i min web.config:

<connectionStrings>
<add name="AccessFileName" connectionString="../database/ASPNetDB.mdb" providerName="System.Data.OleDb"/>
</connectionStrings>
Avatar billede arne_v Ekspert
05. april 2009 - 14:46 #1
Prøv med en absolut sti.

The ASP.NET way ville være at den var i app_data.
Avatar billede jimmydk Nybegynder
05. april 2009 - 16:27 #2
Jeg bruger den her dog i C#, men den kan du hurtigt lave om ved at bruge en converter: http://www.developerfusion.com/tools/convert/csharp-to-vb/

Så er det bare sørge for at du har et DataDirectory, det er normalt App_Data

HUSK at indsætte using System.Data.OleDb;
OleDbConnection MyConnection;
OleDbCommand MyCommand;
MyConnection = new OleDbConnection();

MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Databasen.mdb";

string strSQL = "INSERT INTO Sideindhold (Side, Forside )";
strSQL += "VALUES (@Side, @Forside)";
MyCommand = new OleDbCommand(strSQL, MyConnection);
try
{
   
    MyConnection.Open();
   
    MyCommand.Parameters.Add("@Side", OleDbType.VarChar);
    MyCommand.Parameters.Add("@Forside", OleDbType.VarChar);
   
    MyCommand.Parameters["@Side"].Value = SideT.Text;
    MyCommand.Parameters["@Forside"].Value = Forside.Text;


    MyCommand.ExecuteNonQuery();
    MyConnection.Close();

}


catch (Exception exept)
{
   
    Fejl.Text = Convert.ToString(exept);

}
Avatar billede arne_v Ekspert
05. april 2009 - 16:38 #3
Forudsætter |DataDirectory| ikke at den ligger i app_data ?
Avatar billede bergstein Nybegynder
05. april 2009 - 16:48 #4
Jeg prøver i aften.

Men kan man godt bruge app_data?

Da jeg arbejde med traditionel asp blev jeg altid belært, at jeg ikke måtte lægge databasefiler i min html_public mappe på serveren eller den mappe, hvor alle webfilerne ligger, da der ikke var skriveadgang, men den skulle lægges i databasefolderen et hak længere ude.
Avatar billede arne_v Ekspert
05. april 2009 - 17:00 #5
ASP.NET er anderledes end ASP.

app_data er beregnet tild en slags.
Avatar billede jimmydk Nybegynder
05. april 2009 - 17:15 #6
Jeg bruger den på de sites jeg har til at køre.
Ved f.eks. Surftown er App_Data mappen dit |DataDirectory|

@Arne jeg skal være ærlig jeg har ikke prøvet at ændre mappen, da jeg ikke skal ende med at det går helt galt. ;)

Du kan læse hvordan man kan gøre det her, om det virker ved jeg ikke.
http://www.tech-archive.net/Archive/SQL-Server/microsoft.public.sqlserver.setup/2005-04/msg00173.html

http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/dc31ea59-5718-49b6-9f1f-7039da425296/

Men måske en dårlig formulering jeg lavede omkring at han skulle have et |DataDirectory| før det virker.
Avatar billede bergstein Nybegynder
05. april 2009 - 23:17 #7
Jeg har lige fundet ud af, at jeg troede problemet var, at jeg gemte min database det frkerte sted. TIl at starte med havde jeg forsøgt at gemme min access database i app_data, men troede det var forkert af tidl. nævnte årsager, eftersom min applikation fejlede.

Problemet må altså være noget ande.t

Gemmer jeg min access database i app_data folderen og sætter en asp:login på min webside, og så plejer det at køre for mig.

Det gør det også lokalt.

Når jeg uploader hele lortet til mit webhotel fejler det. (har et webhotel ved samme udbyder med tilkøbt sql server, hvor alt virker fint)

Der er fint forbindelse til databasen, idet jeg bl.a. har en grid, der henter data fra databasen.

Men når jeg forsøger at logge ind, fejler det.  Det er ikke, fordi jeg skriver forkert brugernavn/password, for det har jeg forsøgt at provokere fejl ved og der kommer fejlbesked om, at det er forkert brugernavn/password. Når jeg derimod indtaster korrekte data, så bliver mødt af en traditionel fejlbesked :

---
Webstedet kan ikke vise siden

Mest sandsynlige årsager:
- Webstedet er under vedligeholdelse
- Webstedet har en programmeringsfejl

Prøv at:
- opdatere siden
- Gå tilbage til forrige side
- Flere oplysninger

(flere oplysninger giver flg.)
Denne fejl (HTTP 500 intern serverfejl) betyder, at et serverproblem på det websted, som du besøger, forhindrede visning af websiden.

Hvis du vil have flere oplysninger om HTTP-fejl, skal du se i Hjælp
---

Jeg kan ikke se, hvad fejlen kan være. Programmeringsvejl er også svær at sluge, idet jeg vel ikke har programmeret noget i forbindelse med, at jeg har indsat en ganske alm. asp:login til at logge indg klare ærterne for mig. Og selve forbindelsen til databasen må vel være OK, når jeg har en grid, der kan trække data ud af databasen.
Avatar billede jimmydk Nybegynder
06. april 2009 - 08:42 #8
Jeg har aldrig arbejdet med det indbygget login system, har mit eget simpelt login.

Men har du sat authentication type til "Windows" eller "From the internet"

Der er en artikel om det her.
http://www.sitepoint.com/article/asp-net-2-security/

Ellers ved Arne sikkert mere om dette.
Avatar billede bergstein Nybegynder
06. april 2009 - 09:34 #9
Det er sat til "FORMS" (From the internet)

Det indbyggede login system virker lokalt på min PC med Access.

Det indbyggede login system har også altid virket for mig såvel lokalt som på mit webhotel på de løsninger, hvor jeg bruger MS SQL Server.

Det er kun her, hvor jeg bruger Access jeg ikke får det til at spille
Avatar billede simsen Mester
06. april 2009 - 15:40 #10
Hvordan tilgår du login systemet?

Hvis du har gjort det vha. web.config - skal du huske også at rette stien i web.config filen :-)
Avatar billede bergstein Nybegynder
06. april 2009 - 22:31 #11
Ikke for at køre den for langt ud, men jeg kan ikke overskue det længere. Har oprettet et helt nyt websted med minimale filer og komponenter og samme fejl opstaår:

www.test.jyllandsrubin.dk

Jeg har oprettet en webside helt fra bunden og lagt flg. filer online:
- default.aspx
- default.aspx.vb


på default.aspx er det eneste, der er puttet på websiden nedenstående:

<asp:Login ID="Login1" runat="server"></asp:Login>
<asp:LoginStatus ID="LoginStatus1" runat="server" />
<asp:LoginName ID="LoginName1" runat="server" />

Samt 3 filer downloadet fra en dansk side for at kunne bruge Access som database/provider

Disse 3 downloadede filer er

- en tilrettet web.config (placeret i roden)
- ASPNetDB.mdb (placeret i app_data mappen)
- SampleAccessProviders.dll (placeret i bin mappen)

Prøv at logge ind med
Brugernavn: test
Adgangskode: 1234abcd

Mystisk. Virker fint lokalt, men ikke på mit webhotel.
Avatar billede bergstein Nybegynder
06. april 2009 - 22:31 #12
Jeg kan tilføje, at stien i weg.config peger på mdb-filen i app_data
Avatar billede bergstein Nybegynder
13. april 2009 - 10:58 #13
Jeg lukker tråden.

Jeg har fundet ud af, at jeg IKKE kan bruge Access til asp.nets indbyggede membership og role funktioner, når jeg samtidig har tilkøbt ms sql database på mit webhotel. Jeg kan sagtens få vist data og arbejde med data, men ikke logge ind osv.

Nøjagtig samme webhotel (men uden tilkøb af MS SQL) virker det hele fint inkl. membership og role funktionerne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester