2017-03-18 156 views
4

in一个TWebModule过程/函数如何获取当前请求?Delphi TWebModule(IIS-ISAPI):获取当前请求

我曾尝试:

procedure TWebModule1.DoSomething; 
var 
    aRequest : TWebRequest; 
begin 
    aRequest := Request; 
end; 

,但它似乎对TWebModule创作制作的第一个请求。

我知道我可以将请求传递给每个TWebActionItem后续的程序/函数,但我想避免在每个地方传递请求。有小费吗?

更新

挖掘到的代码后,我发现WebContext,似乎解决方案,例如:

uses Web.WebCntxt; 

procedure TWebModule1.DoSomething; 
var 
    aRequest : TWebRequest; 
begin 
    if WebContext <> nil then 
    aRequest := WebContext.Request; 
end; 

是正确的方式? WebContext似乎总是nil

我在德尔福柏林更新2.

回答

3

每个请求经过在TWebModule.Actions定义的TWebActionItemTWebActionItem有一个事件OnAction。在那里您将获得当前请求的TWebRequest对象。

然后您就可以将它传递给后续的程序/函数。

+0

是的,但我想避免在每个地方通过请求 –

+1

我认为每个请求将在一个单独的线程中处理。所以你应该通过它来避免线程冲突。您也可以将其作为类字段存储。但是,你必须处理多线程。 – Andreas

+0

你可以使它像SOAP或Datasnap webmodules这样的threadvar。 –