所以我有一个缓存本地文件的应用程序,其代码如下:
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的源代码可以打开它并改变它......任何人都知道如何解决这个限制?
答案 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功能),但这会涉及大量代码。