Avatar billede fanatic Nybegynder
17. august 2004 - 10:56 Der er 10 kommentarer og
1 løsning

Login-side! Problem med at få adgang til Access-database

Hej Eksperter!

Jeg har lavet en simpel login-side som skal benytte en ACCESS-database. Der er to felter på siden: Brugernavn og Password. Derudover benytter jeg en CustomValidator.

Hvis jeg prøver at køre projektet (som kører lokalt på min WinXP) får jeg efter at trykke "OK" efter de indtastede oplysninger, følgende fejl i browservinduet:

Server Error in '/produktkatalogMedLogin' Application.
--------------------------------------------------------------------------------

The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\My Documents\Databaseprojekter\login.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\My Documents\Databaseprojekter\login.mdb'. It is already opened exclusively by another user, or you need permission to view its data.

Source Error:

Line 78:         private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
Line 79:         {
Line 80:             oleDbConnection1.Open();
Line 81:
Line 82:             oleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM LOGIN WHERE LOGIN_BRUGERNAVN = '" + Request.Form[ "TextBox_brugernavn" ].ToString() + "'";


Source File: c:\inetpub\wwwroot\produktkatalogmedlogin\webform1.aspx.cs    Line: 80

Stack Trace:

[OleDbException (0x80004005): The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\nicholas\My Documents\Databaseprojekter\login.mdb'.  It is already opened exclusively by another user, or you need permission to view its data.]
  System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr)
  System.Data.OleDb.OleDbConnection.InitializeProvider()
  System.Data.OleDb.OleDbConnection.Open()
  produktkatalogMedLogin.WebForm1.CustomValidator1_ServerValidate(Object source, ServerValidateEventArgs args) in c:\inetpub\wwwroot\produktkatalogmedlogin\webform1.aspx.cs:80
  System.Web.UI.WebControls.CustomValidator.OnServerValidate(String value)
  System.Web.UI.WebControls.CustomValidator.EvaluateIsValid()
  System.Web.UI.WebControls.BaseValidator.Validate()
  System.Web.UI.Page.Validate()
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
  System.Web.UI.Page.ProcessRequestMain()
-----------------------------------------------

Altså, så vidt jeg kan se...er der tale om et problem med rettigheder eller også er den åben(???) i forvejen!

Er der nogen som har et forslag til hvordan jeg kan løse dette problem?


Her er min codeBehind-fil:
----------------------------------------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Security;

namespace produktkatalogMedLogin
{
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox TextBox2;
        protected System.Web.UI.WebControls.Label bruger;
        protected System.Web.UI.WebControls.Button Button_login;
        protected System.Data.OleDb.OleDbConnection oleDbConnection1;
        protected System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
        protected System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
        protected System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
        protected System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
        protected System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
        protected System.Web.UI.WebControls.CustomValidator invalidPasswordValidator;
        protected System.Web.UI.WebControls.TextBox TextBox_brugernavn;
        protected System.Web.UI.WebControls.Label password;
        protected System.Data.OleDb.OleDbDataReader dataReader;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.oleDbConnection1 = new System.Data.OleDb.OleDbConnection();
            this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
            this.oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand();
            this.oleDbUpdateCommand1 = new System.Data.OleDb.OleDbCommand();
            this.oleDbDeleteCommand1 = new System.Data.OleDb.OleDbCommand();
            this.oleDbDataAdapter1 = new System.Data.OleDb.OleDbDataAdapter();
            //
            // oleDbConnection1
            //
            this.oleDbConnection1.ConnectionString = @"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=;Data Source=""C:\Documents and Settings\nicholas\My Documents\Databaseprojekter\login.mdb"";Password=;Jet OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Encrypt Database=False";
            //
            // oleDbDataAdapter1
            //
            this.oleDbDataAdapter1.DeleteCommand = this.oleDbDeleteCommand1;
            this.oleDbDataAdapter1.InsertCommand = this.oleDbInsertCommand1;
            this.oleDbDataAdapter1.SelectCommand = this.oleDbSelectCommand1;
            this.oleDbDataAdapter1.UpdateCommand = this.oleDbUpdateCommand1;
            this.invalidPasswordValidator.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(this.CustomValidator1_ServerValidate);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
        {
            oleDbConnection1.Open();

            oleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM LOGIN WHERE LOGIN_BRUGERNAVN = '" + Request.Form[ "TextBox_brugernavn" ].ToString() + "'";

            dataReader = oleDbDataAdapter1.SelectCommand.ExecuteReader();

            dataReader.Read();

            if(args.Value == dataReader.GetString( 2 ) )
            {
                FormsAuthentication.SetAuthCookie( Request.Form[ "TextBox_brugernavn" ], false );
                Session.Add(  "name", Request.Form[ "TextBox_brugernavn" ].ToString() );
                Response.Redirect( "Produktliste.aspx" );
            }
            else
                args.IsValid = false;

            oleDbConnection1.Close();
        }

        private void oleDbDataAdapter2_RowUpdated(object sender, System.Data.OleDb.OleDbRowUpdatedEventArgs e)
        {
       
        }
    }
}
Avatar billede fanatic Nybegynder
17. august 2004 - 10:59 #1
Uddrag fra Web.config:

<authentication mode="Forms">
    <forms name="DatabaseCookie" loginUrl="WebForm1.aspx" protection="Encryption" />
</authentication>
   
<authorization>
    <deny users="?" /> <!-- Allow all users -->
</authorization>
Avatar billede arne_v Ekspert
17. august 2004 - 11:12 #2
Enten har du databasen åben i et andet program f.eks. Access eller så har
ASP.NET brugernavnet ikke adgang til det directory.
Avatar billede fanatic Nybegynder
17. august 2004 - 11:23 #3
Hej Arne...

Jeg har ikke Access åben, så mon ikke det er det sidste du nævner, der kan være galt!

Kan du uddybe det lidt?? ASP.NET brugernavnet...hvordan skal det forstås? Er det en konto i Windows? Har du et forslag til hvad jeg skal kikke efter, hvis jeg skal give ASP.NET adgang til det katalog som databasen befinder sig i?
Avatar billede arne_v Ekspert
17. august 2004 - 11:29 #4
ASP.NET kører under et brugernavn.

Jeg mener at det default er ASPNET.

Så du kunne prøve at arbejde lidt med det.

Men ellers er den slags absolut ikke min stærke side.
Avatar billede fanatic Nybegynder
17. august 2004 - 12:44 #6
Okay..jeg har kikket på den artikel herover.

Efter at have kikket lidt rundt omkring i filsystemet og min IIS får jeg nu en ny fejl i det at jeg åbner mit ASP-projekt i VS.NET:

The webserver reported the following error when attempting to create or open the Web projekt located at the following URL: 'http://localhost/produktkatalogMedLogin'.'HTTP/1.1 500 Internal Server Error

OK  -  CANCEL  -  HELP

Hmmm....hvad kan der mon nu være galt, husker ikke at jeg pillede hved noget uden at sætte det tilbage igen??
Avatar billede fanatic Nybegynder
17. august 2004 - 13:06 #7
Okay fejlen herover opstår nu ikke mere efter at jeg lavede en genstart???

Men jeg har stadig det samme problem med adgangen til min database!
Er det under IIS'en eller i Windows Explorer, at jeg skal manipulere med rettigheder???
Avatar billede arne_v Ekspert
17. august 2004 - 13:08 #8
Jeg tror at det er et Windows fil protection problem altså Windows Explorer.
Avatar billede fanatic Nybegynder
21. august 2004 - 16:40 #9
Ja jeg kunne ikke forstå hvorfor at jeg ikke kunne sætte security på mine filer i XP. Løsningen var et kryds i et lille felt under Folder options. Herefter kunne jeg såtte ASP-brugeren til at have adgang til mappen.

Tak for hjælpen!
Avatar billede arne_v Ekspert
28. august 2004 - 19:09 #10
Hjælpen noget værd i point ?
Avatar billede arne_v Ekspert
11. september 2004 - 21:55 #11
??
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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