Hejsan, Det går inte; anslutningen är inte trådsäker. Man vet aldrig vilken tråd som kommer att köra din request. Ok! Det är väl inte så lämpligt att öppna en DB-koppling när varje Session startar. Lägg istället kopplingssträngen i din web.config och öppna en DB-koppling vid de tillfällen du behöver den. Ok, jag är öppen för alla kloka förslag. Hur ser koden ut för att lägga in det hela i web.config. Vad jag också har förstått så skriver man kopplingskoden annorlunda än i ASP. Kan man få lite hjälp med hur det skulle kunna se ut i web.config samt hur jag öppnar en DB-koppling? I din web.config lägger duSession + DB-connection
Jag håller på att gå över från ASP till .NET och har lite problem med min global.asax där jag tidigare satte upp en databaskoppling i en sessions-variabel som jag sedan använde på mina sidor. Nu tänkete jag göra lika dant men stöter alltså på patrull. Om jag sätter min sessions-variabel på sidan där jag skall göra min DB-request går det fin-fint att läsa in sessionsvariabeln och göra min request förutsatt att jag har switchen 'aspcompat=true' på. När jag däremot (som jag ju vill ha det) sätter sessionen i global.asax och försöker läsa in den på en annan sida får jag ett 'Null point refrence'-fel som jag antar betyder att sessionen inte är satt riktigt i global.asax. Försökte med att sätta 'aspcompat=true' i global.asax men det gick inget vidare. Är det så att jag inte kan göra DB-kopplingen på samma sätt som tidigare (antar det iom aspcompat=true) och hur bör jag skriva. Det är en koppling mot mySQL-DB.
Mvh Jens
Koden i global.asax nedan:
<Script language="VB" runat="server">
Sub Session_OnStart()
on error resume next
Session("mySQLDB") = server.CreateObject("ADODB.connection")
Session("mySQLDB").open ("Driver={SQL
"Server};Server=localhost;Database=dws;Uid=dws;Pwd=dws666!;")
Application("intUsers") = clng(Application("intUsers")) + 1
on error goto 0
End Sub
Sub Session_OnEnd()
on error resume next
Session("mySQLDB").close
Session("mySQLDB") = nothing
if clng(Application("intUsers")) > 0 then Application("intUsers") = clng(Application("intUsers")) - 1
on error goto 0
End Sub
Sub Application_OnAuthenticateRequest(Source As Object, Details as EventArgs)
'Authentication code goes here.
End Sub
</script>Sv: Session + DB-connection
En bättre variant är att du har en statisk hashtable där du har en tråd som key och din anslutning som value. Sedan har du lite smart kod för att hämta ut en anslutning därifrån och om det behövs ev. skapa dne eller öppna den. På så vis får du en liknande funktionallitet.
AspCompat har inget med vanlig asp att göra; det är bara ett antal småsaker som är ändratSv: Session + DB-connection
Hur skapar jag en statisk hashtable och hur går jag vidare därifrån. Ett kodexempel vore fin fint att få.
Mvh JensSv: Session + DB-connection
Sv: Session + DB-connection
Tack för alla hjälp!
/JensSv: Session + DB-connection
<code>
<appSettings>
<add key="conString" value="Server=localhost;Database=dws;Uid=dws;Pwd=dws666!;" />
</appSettings>
</code>
innanför Configuration taggen.
Värdet kommer du sedan åt med
<code>
strConn = ConfigurationSettings.AppSettings("conString")
</code>
sen använder du strConn i din databaskoppling när du behöver anropa databasen. Detta för att hålla databaskopplingar öppna så kort stund som möjligt.
För info om databaskopplingar i .net kolla in på http://samples.gotdotnet.com/quickstart/
Jag använder MS DataAccessApplicationBlock för mina dbanrop.
Ett exempel
<code>
arrParam = New SqlClient.SqlParameter("@OrderID", SqlDbType.Int)
arrParam.Value = OrderID
MyReader = SqlHelper.ExecuteReader( _
strConn, _
CommandType.StoredProcedure, _
"PDC_OrderRows_SELECT", _
arrParam _
)
</code>