Salve,
ho scritto, si fa per dire, per lo più ho ricopiato da altre applicazioni asp alcune righe di codice per valutare il comportamento di aspnet dovendo traslare le suddette applicazioni verso aspnet.
Ho adattato il file global.asa di asp in un file global.aspx.
codice:
<%@ Application Language="VB" %>
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup
Application("ActiveUser") = 0
End Sub
Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application shutdown
End Sub
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when an unhandled error occurs
End Sub
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started
Application.Lock()
Application("ActiveUser") = Application("ActiveUser") + 1
Session("IDSessione") = Session.SessionID
DBAccess(Session("NewID"), "S")
Session.Timeout = 18
Application.UnLock()
End Sub
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a session ends.
' Note: The Session_End event is raised only when the sessionstate mode
' is set to InProc in the Web.config file. If session mode is set to StateServer
' or SQLServer, the event is not raised.
Application.Lock()
Application("ActiveUser") = Application("ActiveUser") - 1
DBAccess(Session("NewID"), "E")
Session.RemoveAll()
Application.UnLock()
End Sub
Sub DBAccess(ByVal SS, ByVal SE)
Dim odb As TOLPPServerNet.coDBAccess, sqlString As String = "", rs As Int32 = 0
odb = New TOLPPServerNet.coDBAccess
odb.NomeFileIni = System.Web.Hosting.HostingEnvironment.MapPath("\t3\bin\") & "toldbini.ini"
odb.InitClass("192.168.1.50", "192.168.1.50")
odb.DBServer = "192.168.1.50"
odb.DBName = "GIIETAC"
rs = odb.opendatabase("GIIETAC", "sa", "")
If SE = "E" Then
odb.ExecuteCommand("Delete from Tol2006..TolPostiSelezionati where IDPP=" & SS, Nothing, NetIDBAccess.IDBAccess.IDBAccess.DBCmdType.CmdUnknown)
odb.ExecuteCommand("Delete from GIIETAC..tblOnLineSessione where IDSessione='" & SS & "'", Nothing, NetIDBAccess.IDBAccess.IDBAccess.DBCmdType.CmdUnknown)
ElseIf SE = "S" Then
Dim iRnd As Int32 = CType(Format(Date.Now, "hhmmssfff"), Int32)
Randomize(iRnd)
Session("rnd") = iRnd
Dim NewID As Int64 = Rnd() * 1.0E+15
Session("NewID") = NewID
sqlString = "Insert into GIIETAC..TblOnLineSessione values('" & NewID & "',getdate())"
odb.ExecuteCommand(sqlString, Nothing, NetIDBAccess.IDBAccess.IDBAccess.DBCmdType.CmdUnknown)
sqlString = "Insert into GIIETAC..TblUserTrace values('" & Request.Servervariables("REMOTE_ADDR") & "','" & Request.Servervariables("HTTP_USER_AGENT") & "',getdate())"
odb.ExecuteCommand(sqlString, Nothing, NetIDBAccess.IDBAccess.IDBAccess.DBCmdType.CmdUnknown)
End If
odb = Nothing
End Sub
</script>
poi ho scritto una paginetta di prova default.aspx che eseguisse una semplice operazione
il codice della pagina
codice:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Import Namespace="TOLPPServerNet" %>
<%@ Import Namespace="CDataAccess" %>
<%
Dim myDBAccess As TOLPPServerNet.coDBAccess = New TOLPPServerNet.coDBAccess
Dim myRS As CDataAccess.DataAccess = Nothing
Dim RetVal As Object = Nothing
dim IDSessione as string=""
Try
'myDBAccess.InitClass("", "")
myDBAccess.NomeFileIni = (Server.MapPath("\t3\bin\")) & "toldbini.ini"
Response.Write(Server.MapPath("\t3") & "<br>")
Response.Write(myDBAccess.NomeFileIni & "<br>")
If myDBAccess.OpenDataBase("Tol2006", "sa", "") Then
if Session("IDSessione")="" then
Session("IDSessione")=myDBAccess.SessionID
else
myDBAccess.SessionID=Session("NewID")
end if
Response.Write("DB Opened<br>" & Session("IDSessione") & "<br>" & Session("NewID") & "<br>")
response.write(Session("rnd") & "<br>")
If myDBAccess.OpenRecordset("Select * from tolanagraficautente", Nothing, Retval) Then
Response.Write("OpenRecordset<br>")
If IsArray(RetVal) Then
myRS = New CDataAccess.DataAccess
Dim cdo() As Object = CType(RetVal, Array)(0, 3)
Dim fdo As Int16 = CType(RetVal, Array).GetUpperBound(0) + 1
myRS.SetDataAccess(CType(RetVal, Array), fdo, cdo.Length)
Dim i, j As Int16
Response.Write("<table cellspacing=1 border=0>" & ControlChars.CrLf)
For i = 1 To myRS.RowCount
Response.Write("<tr>")
For j = 1 To myRS.FieldCount
Response.Write("<td>" & myRS.ValoreRecord(j, i) & "</td>")
Next
Response.Write("</tr>" & ControlChars.CrLf)
Next
Response.Write("</table>" & ControlChars.CrLf)
End If
End If
End If
Catch ex As Exception
Response.Write(ex.ToString)
End Try
%>
Tralasciando il funzionamento delle due librerie referenziate in entrambi gli script, che sicuramente funzionano essendo state abbondantemente testate con diverse applicazioni dotnet, riporto quello che risulta dal file di log scritto dalla libreria "TOLPPServerNet"
codice:
2014-09-29 03.58.44.687 20140929155844343 - [ExecuteCommand Insert into GIIETAC..TblOnLineSessione values('349804103374481',getdate())] ()
2014-09-29 03.58.44.843 20140929155844343 - [ExecuteCommand Insert into GIIETAC..TblUserTrace values('192.168.1.30','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)',getdate())] ()
2014-09-29 03.58.44.937 349804103374481 - [OpenRecordset Select * from tolanagraficautente] ()
2014-09-29 03.58.46.093 20140929155846078 - [ExecuteCommand Delete from Tol2006..TolPostiSelezionati where IDPP=349804103374481] ()
2014-09-29 03.58.46.125 20140929155846078 - [ExecuteCommand Delete from GIIETAC..tblOnLineSessione where IDSessione='349804103374481'] ()
Come si vede dalla sequenza delle chiamate effettuate subito dopo che la sessione è stata startata e la richiesta di accesso alla base dati è stata soddisfatta viene eseguito il codice di chiusura della sessione.
Ho cercato da diverse parti ma non ho trovato nulla che mi chiarisse le idee.
Premetto che lo stesso codice in formato asp funziona correttamente (ovviamente le librerie richiamate non sono le stesse, ma hanno le stesse funzionalità).
C'è qualche buon samaritano che mi dia le giuste indicazioni o che dica dove è l'errore.
Grazie