Gå til innhold

Anbefalte innlegg

Hei

 

Jeg sliter litt med og få kontakt med en mysql database ved hjelp av asp.net.

får runtime error hver gang.

 

Her er litt av den:

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

 

Sånn ser koden ut:

Dim strConnect As String
 strConnect = "Provider=MySqlProv;Data Source=***;Password=***;User ID=***;Location=localhost"

 

Noen som kan hjelpe meg her?

 

Takk

Lenke til kommentar
Videoannonse
Annonse
Hei

 

Jeg sliter litt med og få kontakt med en mysql database ved hjelp av asp.net.

får runtime error hver gang.

 

Her er litt av den:

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

 

Sånn ser koden ut:

Dim strConnect As String
 strConnect = "Provider=MySqlProv;Data Source=***;Password=***;User ID=***;Location=localhost"

 

Noen som kan hjelpe meg her?

 

Takk

Følg rådet fra feilmeldingen, og prøv fra serveren.

Da vil du forhåpentligvis få en mer detaljert feilmelding.

Om du synes at sikkerhet er tøys og tull, kan du endre settingene i web.config slik at du får detaljerte feilmeldinger fra andre klienter også. (custom error messages=false)

Det er mulig at alt som skal til er en 'trusted connection=false' i connectionstrengen.

 

- grå -

Lenke til kommentar
Takk for raske svar.

 

Har prøvd men det hjelper ikke.. får samme feilmelding uansett.

Er det innstillinger på servern som høyst sannsynlig er feil eller er det koden som ikke er skikkelig?

Det er ikke lett å si uten å se noe kode... Og du kan gjerne ta det som et hint!

 

- grå -

Lenke til kommentar
Dette kan jeg svært lite om, men jeg minnes et eller annet om at brukeren asp_net må ha tilgang til databasen. Mulig jeg tar feil her, men tenkte det var verdt et forsøk...

 

Øyvind.

Det gjelder vel strengt tatt filtilgang til access-databaser. Ved bruk av mysql-drivere vil ikke likt ha noe å si.

 

*leke proff uten å være helt sikker*

Lenke til kommentar
Takk for raske svar.

 

Har prøvd men det hjelper ikke.. får samme feilmelding uansett.

Er det innstillinger på servern som høyst sannsynlig er feil eller er det koden som ikke er skikkelig?

Det er ikke lett å si uten å se noe kode... Og du kan gjerne ta det som et hint!

 

- grå -

Enig... fint om du tar med utdrag fra koden din og web.config, samt ser om du kan få fram en bedre feilmelding.

 

Øyvind.

Lenke til kommentar
Hei

 

Jeg sliter litt med og få kontakt med en mysql database ved hjelp av asp.net.

får runtime error hver gang.

 

Her er litt av den:

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

 

Sånn ser koden ut:

Dim strConnect As String
 strConnect = "Provider=MySqlProv;Data Source=***;Password=***;User ID=***;Location=localhost"

 

Noen som kan hjelpe meg her?

 

Takk

Jeg kom på en ting: Prøv å lage en minimal aspx fil (f.eks hei.aspx som kun inneholder teksten hei). Får du samme feilen når denne vises i browseren (mitt tips er at du alltid får feilen)?

 

Øyvind

Lenke til kommentar

Her kommer det endel kode, håper det gjør ting lettere:

 

<%@ Import Namespace="System.Web.Security " %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<html>

 <script language="VB" runat=server>
   Sub Login(Src As Object, E As EventArgs)
       
 Dim strConnect As String
 strConnect = "Provider=MySqlProv;Data Source=**;Password=**;User ID=**;Location=localhost"
 
   
 
 Dim strUsr As String = txtUsr.Value
 Dim strPwd As String = txtPwd.Value
 
 Dim blnIsAuthenticated As boolean = False
 
 Dim strSQL As String
 strSQL = "SELECT password FROM admin_users WHERE username='" & strUsr & "' AND password='" & strPwd "'"
 
 Try
 	//koble til db
 	Dim objConnect As New OloDbConnection(strConnect)
 	objConnect.Open()
 	
 	//foreta en spørring mot DB
 	Dim objCommand As New OleDbCommand(strSQL, objConnect)
 	
 	//deklarere en variabel som skal holde det som hentes ut fra DB
 	Dim objDataReader As OleDbReader
 	
 	//Utføre
 	objDataReader = objCommand.ExecuteReader()
 	
 	If objDataReader.Read() Then
   If objDataReadeer("Passord") = strPWD Then
   	blnIsAuthenticated = True
   End If
 	End If
 	
 	objDataReader.Close()
 	objConnect.Close()
 	
 	Catch objError As Exception
 	
   outMessage.InnerHtml = "Feil med DB.<br />" & objError.Message & "<br />" & objError.Source
   Exit Sub
   	
 End Try
 
 If blnIsAuthenticated Then
 	FormsAuthentication.RedirectFromLoginPage(txtUsr.Value, _ chkPersist.Checked)
 	
 Else
 	outMessage.InnerHtml = "Fant ikke brukernavn eller passord, prøv igjen."
 End IF
 
   End Sub
 </script>

 

Og web.config:

 

<configuration>
 <system.web>
     <customErrors mode="Off"/>
  <authentication mode="Forms">
       <forms name=".ASPX" loginUrl="login.aspx" protection="All" timeout="60" />
     </authentication>
     <authorization>
       <deny users="?" />
     </authorization>
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
 </system.web>
</configuration>

 

Må web.config filen ligge i roten?

for alt ligger i et par underkataloger.

Lenke til kommentar

Um.

"Don't do that"

To alvorlige feil:

1) Inline kode. Med mange skrivefeil. Hvis du bruker codebehind i stedet, vil du få mange kompileringsfeil, og de er en god del enklere å rette enn runtime feil.

T.d. OloDbConnection

Og ytelse vil bli bedre, men det er kanskje ikke så viktig.

 

2) ALDRI bygg Sqlsetninger basert på ikke-validert brukerinput.

Fordi du kan risikere å få noen hackere som brukere.

Og de vil typisk velge navn som

 

' OR TRUE; DROP TABLE admin_users --

 

...som gjør at spørringen blir

 

SELECT password FROM admin_users WHERE username='' OR TRUE

DROP TABLE admin_users

 

(mulig at MySQL syntaks er litt forskjellig)

Google "SQL injection attack" for flere detaljer.

Så legg minimum til et par validators, og om mulig bruk lagra prosedyrer og parametriserte spørringer.

 

Men i første omgang vil nok en codebehind fil hjelpe deg med å komme videre, så kan du endre SQLen etter hvert.

 

- grå -

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...