10-26-2023, 02:07 PM
Hello,
I'm facing a problem that appeared using 15.3.12 version and higher (I've just tried 15.4.1).
In 15.2.63 that we use in production it works good.
Also, the problem is only on ISAPI module, compiling SA executable it's ok.
In our IWForm we call the application itself to start a new session passing some parmeter that we use to automatically log in, but the content it's not important.
procedure TWMyForm.MyButtonAsyncClick(Sender: TObject; EventParams: TStringList);
...
begin
S:='var formIris = document.forms["SubmitForm"]; ' +
'formIris.setAttribute("action","' + GGetWebApplicationThreadVar.InternalUrlBase + '/start' + '"); ' +
'document.getElementById("HIDDEN_xusr").value = "user"; ' +
'document.getElementById("HIDDEN_profilo").value = "profile"; ' +
'formIris.elements["IW_SessionID_"].value="";' +
'formIris.elements["IW_TrackID_"].value="";' +
'SubmitClick("' + btnConferma.HTMLName + '", "", true); ';
GGetWebApplicationThreadVar.CallBackResponse.AddJavaScriptToExecuteAsCDATA(S);
//After several operation, a new session is going to start; the call stack show me this call:
TIWServerSession.GetStartParams (no source available, I wasn't able to debug)
//soon after in IWApplication:
class procedure TIWParamsString.EncodeParams(const AParamsList: TStrings);
var
i: Integer;
begin
for i := 0 to AParamsList.Count - 1 do begin
AParamsList[i] := TURL.ParamsEncode(AParamsList[i]);
end;
end;
we have:
- AParamsList.Text = 'azienda=AZIN'#$D#$A'BTNANNULLA='#$D#$A'BTNCHIUDI_WC012FVISUALIZZAFILEFM='#$D#$A'BTNCONFERMA='#$D#$A'BTNSENDFILE='#$D#$A'CMBPROFILONUOVO=0'#$D#$A'database=IRIS'#$D#$A'EDTAJAXFORMID=W020FCambioProfilo31591375'#$D#$A'EDTPROFILOATTUALE=D'#$D#$A'GRDMEMOAJAX='#$D#$A'IW_Action=BTNCONFERMA'#$D#$A'IW_ActionParam='#$D#$A'IW_FormClass=TW020FCambioProfilo'#$D#$A'IW_FormName=W020FCambioProfilo'#$D#$A'IW_height='#$D#$A'IW_Location_=http://localhost/Iris32/W000PIrisWEB_IIS.dll/nnIGyEVlGfm5HVTjRMrNnWpaoVS/'#$D#$A'IW_Offset=0,0'#$D#$A'IW_SessionID_='#$D#$A'IW_TrackID_='#$D#$A'IW_width='#$D#$A'IW_WindowID_=wid=FRG~vjMCuGjy6z5eTYWBoef9ggm'#$D#$A'loginesterno=S'#$D#$A'profilo=R'#$D#$A'pwd='#$D#$A'usr='#$D#$A'WR010SCROLLLEFT=0'#$D#$A'WR010SCROLLTOP=0'#$D#$A'xusr=AV2y3wiTbaBdaQK+Qa6qkecYXHC8i2nqKP46P5svn4w= '
- AParamsList.Sorted = True //This is the problem in ISAPI!! In SA Sorted = False
then, the line "AParamsList[i] := TURL.ParamsEncode(AParamsList[i]);" make a call to TStringList.put in System.Classes
procedure TStringList.Put(Index: Integer; const S: string);
begin
if Sorted then Error(@SSortedListError, 0);
--> error page:
Application Error
An unhandled application error has occured within IrisWEB
Error message: Operation not allowed on sorted list
Could you please verify why this different behavior?
Thank you
I'm facing a problem that appeared using 15.3.12 version and higher (I've just tried 15.4.1).
In 15.2.63 that we use in production it works good.
Also, the problem is only on ISAPI module, compiling SA executable it's ok.
In our IWForm we call the application itself to start a new session passing some parmeter that we use to automatically log in, but the content it's not important.
procedure TWMyForm.MyButtonAsyncClick(Sender: TObject; EventParams: TStringList);
...
begin
S:='var formIris = document.forms["SubmitForm"]; ' +
'formIris.setAttribute("action","' + GGetWebApplicationThreadVar.InternalUrlBase + '/start' + '"); ' +
'document.getElementById("HIDDEN_xusr").value = "user"; ' +
'document.getElementById("HIDDEN_profilo").value = "profile"; ' +
'formIris.elements["IW_SessionID_"].value="";' +
'formIris.elements["IW_TrackID_"].value="";' +
'SubmitClick("' + btnConferma.HTMLName + '", "", true); ';
GGetWebApplicationThreadVar.CallBackResponse.AddJavaScriptToExecuteAsCDATA(S);
//After several operation, a new session is going to start; the call stack show me this call:
TIWServerSession.GetStartParams (no source available, I wasn't able to debug)
//soon after in IWApplication:
class procedure TIWParamsString.EncodeParams(const AParamsList: TStrings);
var
i: Integer;
begin
for i := 0 to AParamsList.Count - 1 do begin
AParamsList[i] := TURL.ParamsEncode(AParamsList[i]);
end;
end;
we have:
- AParamsList.Text = 'azienda=AZIN'#$D#$A'BTNANNULLA='#$D#$A'BTNCHIUDI_WC012FVISUALIZZAFILEFM='#$D#$A'BTNCONFERMA='#$D#$A'BTNSENDFILE='#$D#$A'CMBPROFILONUOVO=0'#$D#$A'database=IRIS'#$D#$A'EDTAJAXFORMID=W020FCambioProfilo31591375'#$D#$A'EDTPROFILOATTUALE=D'#$D#$A'GRDMEMOAJAX='#$D#$A'IW_Action=BTNCONFERMA'#$D#$A'IW_ActionParam='#$D#$A'IW_FormClass=TW020FCambioProfilo'#$D#$A'IW_FormName=W020FCambioProfilo'#$D#$A'IW_height='#$D#$A'IW_Location_=http://localhost/Iris32/W000PIrisWEB_IIS.dll/nnIGyEVlGfm5HVTjRMrNnWpaoVS/'#$D#$A'IW_Offset=0,0'#$D#$A'IW_SessionID_='#$D#$A'IW_TrackID_='#$D#$A'IW_width='#$D#$A'IW_WindowID_=wid=FRG~vjMCuGjy6z5eTYWBoef9ggm'#$D#$A'loginesterno=S'#$D#$A'profilo=R'#$D#$A'pwd='#$D#$A'usr='#$D#$A'WR010SCROLLLEFT=0'#$D#$A'WR010SCROLLTOP=0'#$D#$A'xusr=AV2y3wiTbaBdaQK+Qa6qkecYXHC8i2nqKP46P5svn4w= '
- AParamsList.Sorted = True //This is the problem in ISAPI!! In SA Sorted = False
then, the line "AParamsList[i] := TURL.ParamsEncode(AParamsList[i]);" make a call to TStringList.put in System.Classes
procedure TStringList.Put(Index: Integer; const S: string);
begin
if Sorted then Error(@SSortedListError, 0);
--> error page:
Application Error
An unhandled application error has occured within IrisWEB
Error message: Operation not allowed on sorted list
Could you please verify why this different behavior?
Thank you