在 web 服务中最早放弃 POST 请求?

Earliest moment to abandon POST request in webservice?

我的网络服务中的一个 'security measures' 正在阻止大文件上传。
当发送的文件太大时,我想尽快取消文件上传请求。

由于文件上传请求将是最大的请求,我目前在 TWebModule:

BeforeDispatch 处理程序中有此代码
procedure TWebModuleWebServices.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
   // Request that are too large are going to be dropped silently:
   if Request.ContentLength > cMaxContentSize then
   begin
      Handled := true;
      Exit;
   end;

BeforeDispatch 处理程序是该测试的最早可能阶段,还是有更好的地方?

Web 服务是围绕 TIdHTTPWebBrokerBridge(=class(TIdCustomHTTPServer),参见 IdHTTPWebBrokerBridge.pas

构建的

对于 Indy,TCustomWebDispatcher.BeforeDispatch 事件为时已晚,因为 post 数据流已在 TIdCustomHttpServer.DoExecute 中检索到。您可以使用 TIdCustomHTTPServer.OnHeadersAvailable 事件 - 较早触发 - 通过将 VContinueProcessing 设置为 False.

来避免它