IIS 7上的ASP Classic - 可变数据似乎在会话之间传递

时间:2017-08-09 21:39:11

标签: sql asp-classic iis-7

我有一个页面,它收集通过http querystring传递给它的数据并解析它并将其存储在SQL中。数据包括有关服务器签入的驱动器数据。使用自定义VB服务进行检入。

间歇性地发生的是,来自一台服务器的驱动器数据似乎最终存储在另一台服务器下。以下是混淆的元表示:

SERVER - 时间 - CDRIVE - DDRIVE - 注

SERVER-A - 1215--355--126 - 这是Server-A的正常签到

SERVER-B - 1215--1267--426 - 这是Server-B的正常签到

SERVER-A - 1230--1267--426 - 这是B的数据而非A的乱码登记

SERVER-B - 1230--1267--426 - 这是正常的,但不良数据来自

在任何特定服务器之间,只是在两个恰好在同一时间签入的服务器之间不会发生混淆。我尝试过禁用输出缓存,最近我尝试在代码中添加“session.abandon”。

非常感谢任何指导。我不做网络开发作为我的主要任务。在7天之后将驱动器数据设置为循环而不是每24小时循环之前,我甚至没有注意到这个问题。

这是代码 - include只是创建一个“oconn”sql对象。

<%language=vbscript%>
<!--#include file="includes/db.inc"-->  
<%  
'Variable Declaration  
'---------------------  
Private hsid  

'COMMON SECTION  
'--------------  
hsid = request.querystring("hsid")  
if isnumeric(hsid) then  
    hsid = cint(hsid)  
else  
    oconn.close  
    session.abandon  
    response.end  
end if  

sessionid = now() & hsid  
Session("SessionID") = sessionid  
response.write(Session("SessionID") & "<br/>")  

htime = now()  
hdate = datevalue(htime)  
hhour = hour(htime)  
hminute = minute(htime)  
hdur = 300  
hver = request.querystring("hver")  
if hver = "" then  
    hver = "Legacy"  
end if  
hupver = request.querystring("hupver")  
if hupver = "" then  
    hupver = "Legacy"  
end if  
response.write("hupver = *" & hupver & "*<br/>")  

'Stop processing if the server is not supported or the Company is not Icon.  
sql = "select u.txtUserFirstName from users u inner join site s on u.fkySiteID = s.keySiteID inner join Company c on s.fkyCompanyID = c.keyCompanyID where u.keyUserID = " & hsid & " and u.binUserSupport = 1 and c.binCompanyIcon = 1"
set rs = oconn.execute(sql)
if rs.eof then
    response.write("No Support")
    session.abandon
    response.end
end if
rs.close
set rs = nothing

function getfree(inputstring)
    gfindex = instr(inputstring,"-")
'   response.write(gfindex & "<br/>")
    outputstring = mid(inputstring, 1, gfindex-1)
    getfree = outputstring
end function

function getfull(inputstring)
    gfindex = instr(inputstring,"-")
    outputstring = mid(inputstring, gfindex+1, len(inputstring)-gfindex)
    getfull = outputstring
end function

'DRIVES SECTION
'--------------
drivelow = 0 'captures whether any drive is below 1 GB free space for later use
Private drivearr(3,26)
'drivearr(1,x) is for thresholds, (2,x) is for free space, (3,x) is for total capacity
'all drives will actually count from 3 (c) to 26 (z)

'we collect drive threshold settings from the DriveThreshold table, or otherwise generate a default entry for it.
sql = "select * from DriveThreshold where fkyUserID = " & hsid
set rs = oconn.execute(sql)
if not rs.eof then
    drivearr(1,3) = cdbl(rs("intcdrive"))*1024
    drivearr(1,4) = cdbl(rs("intddrive"))*1024
    drivearr(1,5) = cdbl(rs("intedrive"))*1024
    drivearr(1,6) = cdbl(rs("intfdrive"))*1024
    drivearr(1,7) = cdbl(rs("intgdrive"))*1024
    drivearr(1,8) = cdbl(rs("inthdrive"))*1024
    drivearr(1,9) = cdbl(rs("intidrive"))*1024
    drivearr(1,10) = cdbl(rs("intjdrive"))*1024
    drivearr(1,11) = cdbl(rs("intkdrive"))*1024
    drivearr(1,12) = cdbl(rs("intldrive"))*1024
    drivearr(1,13) = cdbl(rs("intmdrive"))*1024
    drivearr(1,14) = cdbl(rs("intndrive"))*1024
    drivearr(1,15) = cdbl(rs("intodrive"))*1024
    drivearr(1,16) = cdbl(rs("intpdrive"))*1024
    drivearr(1,17) = cdbl(rs("intqdrive"))*1024
    drivearr(1,18) = cdbl(rs("intrdrive"))*1024
    drivearr(1,19) = cdbl(rs("intsdrive"))*1024
    drivearr(1,20) = cdbl(rs("inttdrive"))*1024
    drivearr(1,21) = cdbl(rs("intudrive"))*1024
    drivearr(1,22) = cdbl(rs("intvdrive"))*1024
    drivearr(1,23) = cdbl(rs("intwdrive"))*1024
    drivearr(1,24) = cdbl(rs("intxdrive"))*1024
    drivearr(1,25) = cdbl(rs("intydrive"))*1024
    drivearr(1,26) = cdbl(rs("intzdrive"))*1024
else
    sql = "insert into DriveThreshold (fkyUserID, intCDrive, intDDrive, intEDrive, intFDrive, intGDrive, intHDrive, intIDrive, intJDrive, intKDrive, intLDrive, intMDrive, intNDrive, intODrive, intPDrive, intQDrive, intRDrive, intSDrive, intTDrive, intUDrive, intVDrive, intWDrive, intXDrive, intYDrive, intZDrive) values (" & hsid & ", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)"
    oconn.execute(sql)
    for i = 3 to 26
        drivearr(1,i) = 1*1024
    next
end if
rs.close
set rs = nothing

'Load the null value (-1) for all positions in the drivearr for free spacce (2,x) and total capacity (3,x)
for i = 3 to 26
    drivearr(2,i) = -1
    drivearr(3,i) = -1
next

cdrive = request.querystring("c") 'collect C Drive data
'   response.write("cdrive=" & cdrive & "<br/>")
    if len(cdrive) > 3 then
        drivearr(2,3) = getfree(cdrive)
        drivearr(3,3) = getfull(cdrive)
    end if

if drivearr(2,3) > -1 then     'only if C Drive is being monitored do we do the rest of the work
    ddrive = request.querystring("d")
'       response.write("ddrive=" & ddrive & "<br/>")
        if len(ddrive) > 3 then
            drivearr(2,4) = getfree(ddrive)
            drivearr(3,4) = getfull(ddrive)
        end if
    edrive = request.querystring("e")
'       response.write("edrive=" & edrive & "<br/>")
        if len(edrive) > 3 then
            drivearr(2,5) = getfree(edrive)
            drivearr(3,5) = getfull(edrive)
        end if
    fdrive = request.querystring("f")
        if len(fdrive) > 3 then
            drivearr(2,6) = getfree(fdrive)
            drivearr(3,6) = getfull(fdrive)
        end if
    gdrive = request.querystring("g")
        if len(gdrive) > 3 then
            drivearr(2,7) = getfree(gdrive)
            drivearr(3,7) = getfull(gdrive)
        end if
    hdrive = request.querystring("h")
        if len(hdrive) > 3 then
            drivearr(2,8) = getfree(hdrive)
            drivearr(3,8) = getfull(hdrive)
        end if
    idrive = request.querystring("i")
        if len(idrive) > 3 then
            drivearr(2,9) = getfree(idrive)
            drivearr(3,9) = getfull(idrive)
        end if
    jdrive = request.querystring("j")
        if len(jdrive) > 3 then
            drivearr(2,10) = getfree(jdrive)
            drivearr(3,10) = getfull(jdrive)
        end if
    kdrive = request.querystring("k")
        if len(kdrive) > 3 then
            drivearr(2,11) = getfree(kdrive)
            drivearr(3,11) = getfull(kdrive)
        end if
    ldrive = request.querystring("l")
        if len(ldrive) > 3 then
            drivearr(2,12) = getfree(ldrive)
            drivearr(3,12) = getfull(ldrive)
        end if
    mdrive = request.querystring("m")
        if len(mdrive) > 3 then
            drivearr(2,13) = getfree(mdrive)
            drivearr(3,13) = getfull(mdrive)
        end if
    ndrive = request.querystring("n")
        if len(ndrive) > 3 then
            drivearr(2,14) = getfree(ndrive)
            drivearr(3,14) = getfull(ndrive)
        end if
    odrive = request.querystring("o")
        if len(odrive) > 3 then
            drivearr(2,15) = getfree(odrive)
            drivearr(3,15) = getfull(odrive)
        end if
    pdrive = request.querystring("p")
        if len(pdrive) > 3 then
            drivearr(2,16) = getfree(pdrive)
            drivearr(3,16) = getfull(pdrive)
        end if
    qdrive = request.querystring("q")
        if len(qdrive) > 3 then
            drivearr(2,17) = getfree(qdrive)
            drivearr(3,17) = getfull(qdrive)
        end if
    rdrive = request.querystring("r")
        if len(rdrive) > 3 then
            drivearr(2,18) = getfree(rdrive)
            drivearr(3,18) = getfull(rdrive)
        end if
    sdrive = request.querystring("s")
        if len(sdrive) > 3 then
            drivearr(2,19) = getfree(sdrive)
            drivearr(3,19) = getfull(sdrive)
        end if
    tdrive = request.querystring("t")
        if len(tdrive) > 3 then
            drivearr(2,20) = getfree(tdrive)
            drivearr(3,20) = getfull(tdrive)
        end if
    udrive = request.querystring("u")
        if len(udrive) > 3 then
            drivearr(2,21) = getfree(udrive)
            drivearr(3,21) = getfull(udrive)
        end if
    vdrive = request.querystring("v")
        if len(vdrive) > 3 then
            drivearr(2,22) = getfree(vdrive)
            drivearr(3,22) = getfull(vdrive)
        end if
    wdrive = request.querystring("w")
        if len(wdrive) > 3 then
            drivearr(2,23) = getfree(wdrive)
            drivearr(3,23) = getfull(wdrive)
        end if
    xdrive = request.querystring("x")
        if len(xdrive) > 3 then
            drivearr(2,24) = getfree(xdrive)
            drivearr(3,24) = getfull(xdrive)
        end if
    ydrive = request.querystring("y")
        if len(ydrive) > 3 then
            drivearr(2,25) = getfree(ydrive)
            drivearr(3,25) = getfull(ydrive)
        end if
    zdrive = request.querystring("z")
        if len(zdrive) > 3 then
            drivearr(2,26) = getfree(zdrive)
            drivearr(3,26) = getfull(zdrive)
        end if

    'Test to see if any of the drives are low
    for i = 3 to 26
        if drivearr(2,i) > -1 then
            if cdbl(drivearr(2,i)) < cdbl(drivearr(1,i)) then drivelow = 1
        end if
    next

    if drivelow = 1 then  'we set the toggle for the server having 1+ drives low in the Users table.
        sql = "update Users set binServerDriveLow = 1 where keyUserID = " & hsid
        oconn.execute(sql)
    else
        sql = "update Users set binServerDriveLow = 0 where keyUserID = " & hsid
        oconn.execute(sql)
    end if

    '----This section determines which of 2016 5-minute-intervals the check-in time matches and rounds the check-in time
    rdate = hdate
    rdayofweek = weekday(hdate)
    rhour = hhour
    rsequence = round(hminute/5,0)
    if rsequence = 12 then
        rsequence = 0
        rhour = rhour + 1
        if rhour = 24 then
            rhour = 0
            rdate = dateadd("d", 1, rdate)
            rdayofweek = weekday(rdate)
        end if
    end if
    rminute = rsequence * 5
    rindex = ((rdayofweek-1) * 288) + (rhour * 12) + rsequence + 1
    rtime = rdate & " " & timeserial(rhour, rminute, 0)
    response.write("rindex: " & rindex & "<br />")

    '----Determines which key value matches the sequence number in the DailyDrive table for use in data punch-down.
    sql = "select keyDriveDailyID from DriveDaily where intDriveDailyIndex = " & rindex & " and fkyUserID = " & hsid
    set rs = oconn.execute(sql)
    if not rs.eof then 'if the sequence is found in the table and has a key value then update the table, otherwise....
        ddkey = rs("keyDriveDailyID")
        sql = "update DriveDaily set datDriveDailyTime = '" & rtime & "', CDrive = " & drivearr(2,3) & ", CDriveCap = " & drivearr(3,3) & ", DDrive = " & drivearr(2,4) & ", DDriveCap = " & drivearr(3,4) & ",  EDrive = " & drivearr(2,5) & ", EDriveCap = " & drivearr(3,5) & ",  FDrive = " & drivearr(2,6) & ", FDriveCap = " & drivearr(3,6) & ",  GDrive = " & drivearr(2,7) & ", GDriveCap = " & drivearr(3,7) & ",  HDrive = " & drivearr(2,8) & ", HDriveCap = " & drivearr(3,8) & ",  IDrive = " & drivearr(2,9) & ",  IDriveCap = " & drivearr(3,9) & ", JDrive = " & drivearr(2,10) & ", JDriveCap = " & drivearr(3,10) & ", KDrive = " & drivearr(2,11) & ",  KDriveCap = " & drivearr(3,11) & ", LDrive = " & drivearr(2,12) & ",  LDriveCap = " & drivearr(3,12) & ", MDrive = " & drivearr(2,13) & ",  MDriveCap = " & drivearr(3,13) & ", NDrive = " & drivearr(2,14) & ",  NDriveCap = " & drivearr(3,14) & ", ODrive = " & drivearr(2,15) & ",  ODriveCap = " & drivearr(3,15) & ", PDrive = " & drivearr(2,16) & ",  PDriveCap = " & drivearr(3,16) & ", QDrive = " & drivearr(2,17) & ",  QDriveCap = " & drivearr(3,17) & ", RDrive = " & drivearr(2,18) & ",  RDriveCap = " & drivearr(3,18) & ", SDrive = " & drivearr(2,19) & ",  SDriveCap = " & drivearr(3,19) & ", TDrive = " & drivearr(2,20) & ",  TDriveCap = " & drivearr(3,20) & ", UDrive = " & drivearr(2,21) & ",  UDriveCap = " & drivearr(3,21) & ", VDrive = " & drivearr(2,22) & ",  VDriveCap = " & drivearr(3,22) & ", WDrive = " & drivearr(2,23) & ",  WDriveCap = " & drivearr(3,23) & ", XDrive = " & drivearr(2,24) & ",  XDriveCap = " & drivearr(3,24) & ", YDrive = " & drivearr(2,25) & ",  YDriveCap = " & drivearr(3,25) & ", ZDrive = " & drivearr(2,26) & ",  ZDriveCap = " & drivearr(3,26) & " where keyDriveDailyID = " & ddkey
'       response.write(sql)
'       response.write("<br />")
'       response.end
        oconn.execute(sql)
    else '...otherwise add a new entry to the table.
        sql = "select numCounter from Counter where txtTableName = 'DriveDaily'"
        set cs = oconn.execute(sql)
        if not cs.eof then
            ddkey = cdbl(cs("numCounter"))
        end if
        cs.close
        set cs = nothing

        sql = "insert into DriveDaily(keyDriveDailyID, fkyUserID, datDriveDailyTime, intDriveDailyIndex, CDrive, CDriveCap, DDrive, DDriveCap, EDrive, EDriveCap, FDrive, FDriveCap, GDrive, GDriveCap, HDrive, HDriveCap, IDrive, IDriveCap, JDrive, JDriveCap, KDrive, KDriveCap, LDrive, LDriveCap, MDrive, MDriveCap, NDrive, NDriveCap, ODrive, ODriveCap, PDrive, PDriveCap, QDrive, QDriveCap, RDrive, RDriveCap, SDrive, SDriveCap, TDrive, TDriveCap, UDrive, UDriveCap, VDrive, VDriveCap, WDrive, WDriveCap, XDrive, XDriveCap, YDrive, YDriveCap, ZDrive, ZDriveCap) values (" & ddkey & ", " & hsid & ", '" & rtime & "', " & rindex & ", " & drivearr(2,3) & ", " & drivearr(3,3) & ", " & drivearr(2,4) & ", " & drivearr(3,4) & ", " & drivearr(2,5) & ", " & drivearr(3,5) & ", " & drivearr(2,6) & ", " & drivearr(3,6) & ", " & drivearr(2,7) & ", " & drivearr(3,7) & ", " & drivearr(2,8) & ", " & drivearr(3,8) & ", " & drivearr(2,9) & ", " & drivearr(3,9) & ", " & drivearr(2,10) & ", " & drivearr(3,10) & ", " & drivearr(2,11) & ", " & drivearr(3,11) & ", " & drivearr(2,12) & ", " & drivearr(3,12) & ", " & drivearr(2,13) & ", " & drivearr(3,13) & ", " & drivearr(2,14) & ", " & drivearr(3,14) & ", " & drivearr(2,15) & ", " & drivearr(3,15) & ", " & drivearr(2,16) & ", " & drivearr(3,16) & ", " & drivearr(2,17) & ", " & drivearr(3,17) & ", " & drivearr(2,18) & ", " & drivearr(3,18) & ", " & drivearr(2,19) & ", " & drivearr(3,19) & ", " & drivearr(2,20) & ", " & drivearr(3,20) & ", " & drivearr(2,21) & ", " & drivearr(3,21) & ", " & drivearr(2,22) & ", " & drivearr(3,22) & ", " & drivearr(2,23) & ", " & drivearr(3,23) & ", " & drivearr(2,24) & ", " & drivearr(3,24) & ", " & drivearr(2,25) & ", " & drivearr(3,25) & ", " & drivearr(2,26) & ", " & drivearr(3,26) & ")"
'       response.write(sql)
'       response.end
        oconn.execute(sql)
        sql = "update Counter set numCounter = " & ddkey+1 & " where txtTableName = 'DriveDaily'"
        oconn.execute(sql)
    end if
    rs.close
    set rs = nothing
end if

'HEARTBEAT SECTION-------------------------------------------------------------
'   DATETIME SUBSECTION
'   -------------------
dt = request.querystring("dt")
if dt = "" then
'   do nothing
else
    dtyear = mid(dt,1,4)
    dtmonth = mid(dt,5,2)
    dtday = mid(dt,7,2)
    dthour = mid(dt,9,2)
    dtminute = mid(dt,11,2)

    dtstring = dtmonth & "/" & dtday & "/" & dtyear & " " & dthour & ":" & dtminute
end if

sql = "select datHeartLast, intHeartNext from Users where keyUserID = " & hsid
set rs = oconn.execute(sql)
if not rs.eof then
    hlast = rs("datHeartLast")
    hnext = rs("intHeartNext")
end if
rs.close
set rs = nothing
response.write("<br />hlast = " & hlast & "<br />hnext = " & hnext)

if hnext > 0 then
    hgap = datediff("s",hlast,htime)
    if hnext + 60 < hgap then
        sql = "select numCounter from Counter where txtTableName = 'Heart'"
        set rs = oconn.execute(sql)
        if not rs.eof then
            heartid = cdbl(rs("numCounter"))
        end if
        rs.close
        set rs = nothing

        sql = "insert into Heart (keyHeartID, fkyServerID, datHeartDownStart, datHeartDownEnd) values (" & heartid & ", " & hsid & ", '" & hlast & "', '" & htime & "')"
        oconn.execute(sql)

        sql = "update Counter set numCounter = " & heartid + 1 & " where txtTableName = 'Heart'"
        oconn.execute(sql)
    end if
else
    sql = "update Users set datHeartFirst = '" & htime & "' where keyUserID = " & hsid
    oconn.execute(sql)
end if

sql = "update Users set datHeartLast = '" & htime & "', intHeartNext = " & hdur & ", datHeartDT = '" & dtstring & "', fkyHeartTicketID = null, binHeartEmailSent = 0, txtHeartVersion = '" & hver & "', txtHeartUpVersion = '" & hupver & "' where keyUserID = " & hsid
oconn.execute(sql)

oconn.close
set oconn = nothing
response.write(rindex & " " & htime & " " & rtime)
session.abandon
%>

0 个答案:

没有答案