Fiddlercore x-replywithfile超过2GB

时间:2013-11-14 21:49:12

标签: c# fiddler fiddlercore

所以我有一个缓存本地文件的应用程序,其代码如下:

Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
{
    if (oS.url.StartsWith("foo.com/"))
    {
        oS.utilCreateResponseAndBypassServer();
        oS.oFlags["x-replywithfile"] = Path.GetFullPath(oS.url.Replace("foo.com/", "serve/"));
    }
}

这适用于任何文件< 2GB。超过2GB我得到错误:

Fiddler - The requested file could not be read. The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size.   

我假设内部Fiddler正在使用类似File.ReadAllBytes的东西,因为int的最大大小限制为2gb。据我所知,没有FiddlerCore的源代码可以打开它并改变它......任何人都知道如何解决这个限制?

1 个答案:

答案 0 :(得分:1)

很酷的场景。

是的,遗憾的是,.NET Framework固有地将所有对象限制为2GB大小,因此早期版本的AutoResponder 无法返回超过2GB的响应。 更新: Fiddler版本2.4.9.4及更高版本自动检测大文件;超过262兆字节(X-ReplyWithFile首选项)的任何fiddler.memory.DropIfOver正文将从客户端流式传输而不存储在内存中。

可以使用Fiddler将HTTP/307重定向返回到其他网络服务器并在那里托管大文件。

您的事件处理程序也可以使用oSession.oRequest.pipeClient.Send方法直接将文件的字节流传输到客户端(不使用x-replywithfile功能),但这会涉及大量代码。

相关问题