2017-03-18 154 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。 –