1

我正在尝试构建一个 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 服务器下运行我的网站时,这很有效,但是当我在 IIS 7(集成模式)下运行它时,GetPreloadedEntityBody方法不断返回一个空字节数组。

关于为什么GetPreloadedEntityBody方法的返回字节数组在 IIS 7 上为空的任何想法?

4

1 回答 1

0

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

于 2013-01-08T21:14:53.850 回答