网络断开时的FiddlerCore行为

时间:2014-05-26 10:48:09

标签: c# session fiddler fiddlercore

我正在使用FiddlerCore处理本地请求:

private static void FiddlerApplication_BeforeRequest(Session session)
{
    if (session.hostname.ToLower() == "localhost")
        ProcessRequest(session);
}

一切运作良好但是当互联网网络出现故障时,我收到以下消息:

"[Fiddler] DNS Lookup for "www.google.com" failed. The system reports that no network connection is available. No such host is known"

我的问题是:
我应该如何配置FiddlerCore,以便在网络关闭时,我会收到常规的404页面?

1 个答案:

答案 0 :(得分:0)

您注意到:When a proxy is present, the browser doesn't show its default error pages.这是一个正确的陈述,并不是Fiddler独有的。

你会让人感到困惑,因为你正在谈论"定期的404回复#34。这令人困惑,因为您正在谈论的网页与HTTP / 404无关 - 它是浏览器的DNS Lookup FailureServer Unreachable错误页面,它显示DNS查找失败或TCP / IP连接尝试失败时显示。其中任何一个都不是404,这是一个错误代码,只有在DNS查找成功并且TCP / IP连接成功后才能由服务器返回。

对于您的问题:How can I make a request through a proxy result in the same error page that would be shown if the proxy weren't present,答案是,一般情况下,您不能这样做。您可以做一些愚蠢的事情,例如将HTML从浏览器的错误页面中复制出来并让代理返回,但因为每个浏览器(和版本)可能使用不同的错误页面,您的诡计会很容易被发现。

可能尝试的一件事是让一个给定的站点绕过代理(这样代理只用于您关心的主机)。为此,您需要创建一个代理自动配置脚本文件(PAC文件)并使其FindProxyForURL函数返回DIRECT,除了您要通过的网站之外的所有内容代理。请参阅this post的配置脚本部分。

但是,退一步,你甚至需要一个代理吗?您无法在localhost上运行自己的网络服务器吗?当你启动Fiddler / FiddlerCore时,它会监听localhost:[port]。只需将您的HTTP请求指向那里,而无需将Fiddler设置为系统代理。