IIS7集成模式下的HttpWorkerRequest.GetPreloadedEntityBody

时间:2012-05-22 15:05:12

标签: asp.net iis-7 httphandler

我正在尝试构建一个HttpHandler(.NET Framework 4)来处理大文件的上传。 想法是抓住HttpWorkerRequest并阅读正文流。我使用 HttpWorkerRequest。GetPreloadedEntityBody 来检索收到的HTTP正文的第一个块。

以下是我如何获得预加载的实体:

IServiceProvider provider = (IServiceProvider)context;
HttpWorkerRequest wr = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
byte[] entityBodyBytes = wr.GetPreloadedEntityBody();

当我在我的本地IIS(Windows xp下的5.1)或Visual Studio Web Server下运行我的网站时,这很有效,但是当我在IIS 7(集成模式)下运行它时, GetPreloadedEntityBody 方法不断返回一个空字节数组。

为什么 GetPreloadedEntityBody 方法的返回字节数组在IIS 7上为空?

1 个答案:

答案 0 :(得分:0)

我不是这方面的专家,但我认为这是因为当你问的时候,身体都没有装满。尝试检查GetPreloadedEntityBodyLength()> 0在调用GetPreloadedEntityBody()之前。如果它为零,那么你将不得不直接进入文件读取循环。