webForumDet fria alternativet

System.InvalidOperationException: The ConnectionString property has not been initiali

8 svar · 806 visningar · startad av andreas_lindh

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#1

jag har den här koden för att hämta data och skapa ett dataset

Public Function GetGoalies(ByVal lagID As Integer)
                Dim ds As New DataSet()
                Dim cmd As New SqlDataAdapter("GetGoalies", objConn)
                cmd.SelectCommand.CommandType = CommandType.StoredProcedure
                cmd.SelectCommand.Parameters.Add("@lagID", SqlDbType.Int, 100).Value = lagID
                Try
                    cmd.Fill(ds)
                    Return ds
                Catch ex As Exception
                    Throw (ex)
                Finally
                    objConn.Close()
                    objConn.Dispose()
                End Try
            End Function

Databaskopplingen ser ut så här

Dim strCnn As String = ConfigurationSettings.AppSettings("connectionstring") 
Function GetConnection()

            Dim objConn As New SqlConnection(strCnn)
            Return objConn

        End Function
Public objConn As SqlConnection = GetConnection()

I web.config

<add key="connectionstring" value="Server=server;Database=databas;user id=användarnamn;password=lösenord;" />

Nu får jag det här felmeddelandet

Exception Details: System.InvalidOperationException: The ConnectionString property has not been initialized.

Det är bara den här funktionen som inte fungerar. Det fungerar på resten av sidan.
Det fungerar när jag kör det lokalt men inte när jag laddat upp det på hotellet.

Någon som vet vad som kan vara fel?

icaaqMedlem sedan okt. 20005 273 inlägg
#2

Jag ser inte att du har initierat objConn i getgoalies, kan det vara så enkelt?

mv icaaq

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#3

Då borde den väl inte fungerat när jag körde den på localhost heller?

SPiNMedlem sedan mars 20007 896 inlägg
#4

Den fungerar eftersom att du har deklarerat objConn som en public instans av SqlConnection. Problemet ligger nog i att du inte har tillgång till strängen strCnn i din funktion... Skulle jag gissa på. Försök att skicka med den som en parameter till GetConnection().
Alltså:

Function GetConnection( strCnn As String ) As SqlConnection
     ...
End Function
SqlConnection sqlC = GetConnection( strCnn )
andreas_lindhMedlem sedan jan. 20011 140 inlägg
#5

Problemet verkar vara att jag har andra funktioner på samma sida som kör objconn.dispose()

Tar jag bort objconn.dispose() fungerar allt

SPiNMedlem sedan mars 20007 896 inlägg
#6

Då kör du troligtvis en .dispose() innan du försöker använda en, då, inte tillgänglig instans av SqlConnection? Kanske kan vara en orsak, annars vet jag inte - jag programmerar inte .NET. ;)

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#7

jag tycker det är konstigt att det fungerar lokalt men inte på webhotellet.

Det är ju samma kod

SPiNMedlem sedan mars 20007 896 inlägg
#8

Har du ändrat i web.config på webhotellet? Måste IIS:en inte startas om när ändringar görs i den filen?

nikoMedlem sedan juni 20022 599 inlägg
#9

andreas_lindh>> Borde du inte öppna din connection nånstans? objConn.Open()?

SPiN>> Nej, IIS:en har den cachad i minnet och läser om den varje gång Windows meddelar att den ändrats.

122 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)