Hej Jeg er igang med at lave en webservice og da jeg udvikler den på min server som skal køre den, virker den men når jeg så vil bruge den så virker den ikke så melder den database fejl
håber der er en der kan finde ud af hvorfor den giver DB FEJL når jeg køre på den ude fra men virker når jeg køre den fra min server.
mens GetSession virker..
Min kode <WebMethod()> _ Public Function CreateSession(ByVal MySession As String, ByVal SessionData As String) As String Dim MySessionNr As Double If MySession.Length > 0 Then MySession = MySession.Replace(" ", "") Double.TryParse(MySession, MySessionNr) Else Dim NewSession As System.Random = New System.Random() MySessionNr = NewSession.Next(100000000, 999999999) End If Dim DBConn As New OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};", HttpContext.Current.Server.MapPath("\App_Data\Sessiondb.accdb"))) Dim DBcomm As New OleDbCommand Dim DBupda As New OleDbCommand Dim DBInde As New OleDbCommand DBcomm.Connection = DBConn Try DBConn.Open() DBcomm.CommandText = "SELECT RemoteData FROM RemoteSession WHERE RemoteNr=" & MySessionNr & ";" Dim DBReader As OleDbDataReader = DBcomm.ExecuteReader If DBReader.HasRows Then ' (Not reader Is Nothing) DBupda.CommandType = CommandType.Text DBupda.Connection = DBConn DBupda.CommandText = "UPDATE RemoteSession SET RemoteData='" & SessionData & "' WHERE RemoteNr=" & MySessionNr & ";" DBupda.ExecuteNonQuery() 'Do While DBReader.Read 'Me.txtName.Text = DBReader.Item("RemoteData").ToString 'Loop DBReader.Close() Else DBInde.CommandType = CommandType.Text DBInde.CommandText = "INSERT INTO RemoteSession(RemoteNr,RemoteData) VALUES ('" & MySessionNr & "','" & SessionData & "');" DBInde.Connection = DBConn DBInde.ExecuteNonQuery() DBInde.Clone() End If Return System.Convert.ToString(MySessionNr) Catch ex As Exception DBConn.Close() Return "DB FEJL" End Try End Function
<WebMethod()> _ Public Function GetSession(ByVal MySession As String) As String Dim DBConn As New OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};", HttpContext.Current.Server.MapPath("\App_Data\Sessiondb.accdb"))) Dim DBcomm As New OleDbCommand DBcomm.Connection = DBConn Try DBConn.Open() DBcomm.CommandText = "SELECT RemoteData FROM RemoteSession WHERE RemoteNr=" & MySession & ";" Dim DBReader As OleDbDataReader = DBcomm.ExecuteReader If DBReader.HasRows Then ' (Not reader Is Nothing) Do While DBReader.Read Return DBReader.Item("RemoteData").ToString Loop Else Return "n/a" End If DBConn.Close() Catch ex As Exception DBConn.Close() Return "Fejl" End Try
giver session numre som er nemme at gaette, hvilket muligvis er et sikkerheds problem
4)
Dim DBConn As New OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};", HttpContext.Current.Server.MapPath("\App_Data\Sessiondb.accdb")))
burde bruge Using til at sikre close af connection
5)
Dim DBConn As New OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};", HttpContext.Current.Server.MapPath("\App_Data\Sessiondb.accdb")))
MapPath til den sti ser meget suspekt ud
6)
DBupda.CommandText = "UPDATE RemoteSession SET RemoteData='" & SessionData & "' WHERE RemoteNr=" & MySessionNr & ";"
Webservice køre lige nu bare som et minder forsøg. som skal modtage nåde data og hvis den ikke har et id så får den et. ellers rette den bare give ids data. da det nummer skal man kun søge på og få give data..
ex.Message = DB FEJL: Operation must use an updateable query. ---- ex.StackTrace = DB FEJL: at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at HelpPcApi.RemoteTerminal.CreateSession(String MySession, String SessionData) in RemoteTerminal.asmx.vb:line 85
Ups det er hvis det man kalder en fejl 40, Jeg har glemt at give min server skrive ret.. men nu virker det. selv om jeg godt nok ved det er lidt klosse kode.
Ja mysql, men skulle bare lige hvad styr på at se det virker. da jeg skal have nåde date fra en computer over til en anden som man så kan hente via id.. og her var det jo kun et meget simple script der skulle virker første.
Jeg er nemlig i gang med at lave nåde fjernstyring system.
SQLServer CE (som ikke har mere tilfaelles med SQLServer end navnet)
Synes godt om
Ny brugerNybegynder
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.