Indy http 服务器会话运行不正常
Indy http server session doesn't work well
如何创建在 idhttpserver 中使用的会话?
我尝试了很多方法,但我无法访问 ARequestInfo.Session 或 AResponseInfo.Session 中的会话对象,它们始终为零。请帮忙
procedure TFolsecPermissionManager.IdHTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Command: TCommand;
Session: TIdHTTPSession;
begin
Session := IdHTTPServer.CreateSession(AContext, AResponseInfo, ARequestInfo);
IdHTTPServer.SessionList.Add(Session);
Command:= TCommand.Create;
Command.Start(AContext, ARequestInfo, AResponseInfo);
end;
确保 TIdHTTPServer.SessionState
设置为 True
。或者,您也可以将 TIdHTTPServer.AutoStartSession
设置为 True
。默认情况下,它们都是 False
。
如果两者都是 True
,则您无需手动调用 CreateSession()
,因为它会为每个不携带现有会话 cookie 的传入请求自动调用。
如果 SessionState=True
和 AutoStartSession=False
,您确实需要在需要时手动调用 CreateSession()
。
但是,无论如何,不要手动调用 SessionList.Add()
,因为 CreateSession()
会在内部为您调用。您不希望 SessionList
持有对同一个 TIdHTTPSession
对象的多个引用。
如何创建在 idhttpserver 中使用的会话?
我尝试了很多方法,但我无法访问 ARequestInfo.Session 或 AResponseInfo.Session 中的会话对象,它们始终为零。请帮忙
procedure TFolsecPermissionManager.IdHTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Command: TCommand;
Session: TIdHTTPSession;
begin
Session := IdHTTPServer.CreateSession(AContext, AResponseInfo, ARequestInfo);
IdHTTPServer.SessionList.Add(Session);
Command:= TCommand.Create;
Command.Start(AContext, ARequestInfo, AResponseInfo);
end;
确保 TIdHTTPServer.SessionState
设置为 True
。或者,您也可以将 TIdHTTPServer.AutoStartSession
设置为 True
。默认情况下,它们都是 False
。
如果两者都是 True
,则您无需手动调用 CreateSession()
,因为它会为每个不携带现有会话 cookie 的传入请求自动调用。
如果 SessionState=True
和 AutoStartSession=False
,您确实需要在需要时手动调用 CreateSession()
。
但是,无论如何,不要手动调用 SessionList.Add()
,因为 CreateSession()
会在内部为您调用。您不希望 SessionList
持有对同一个 TIdHTTPSession
对象的多个引用。